Is 7TV safe?

Medium risk

7TV fetches a remote configuration from its servers to determine which other installed extensions to flag for disabling.

On startup, 7TV requests https://7tv.io/v3/config/extension and parses a compatibility list of extension IDs from the response. Any installed extension whose ID appears in that server-controlled list is displayed with a warning in the 7TV Compat UI, and a Disable button is presented to the user. With the optional management permission granted, clicking that button calls chrome.management.setEnabled to disable the targeted extension — with the target set entirely determined by the remote server.

7TVv3.1.25Firefox Add-ons
45Risk

AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.

Publishers can request a review.

Findings

SeverityMEDIUM
ClassUNWANTED
TypeUnexpected
CWECWE-829
SourceAI SANDBOX

Remote compatibility config can flag extensions for disabling

The compatibility screen requests 7TV's config from 7tv.io.

Code matches installed extension IDs against the response's list, warns on matches, and once granted management permission, disables the match via a DISABLE button.

01EvidenceCAUSE EFFECT
What actually happens
You did this

You open 7TV's compatibility screen during onboarding or from settings.

The screen includes a Check Compatibility flow that asks for the optional management permission.

The extension did this

The extension downloads a server-provided compatibility list and compares it with installed extensions.

If an installed extension is listed with issues, the UI shows the issue text and can offer a DISABLE button after permission is granted.

02EvidenceNETWORK CAPTURE
Captured request
GEThttps://7tv.io/v3/config/extension
Observed during dynamic analysis when the compatibility UI loaded; the code parses the response as JSON and stores it as the compatibility configuration.
03EvidenceFIELD TABLE
Fields that drive the compatibility decision
FieldValueWhy it matters
Matched extension IDs
["ajopnjidmegmdimjlfnijceegpefgped", "firefox@betterttv.net"]Lets the compatibility list decide which installed extensions appear as concerns in the UI.
Issue severity
DUPLICATE_FUNCTIONALITYSets the warning category and color shown beside a matched extension.
Issue message
A significant amount of functionality from this extension is also in 7TV. While there is no known immediate clashing with this extension, such redundancy may decrease performanceControls the explanatory text shown to you for the matched extension.
Installed extension state
BetterTTV 7.6 enabledLets the UI decide whether the matched extension is still enabled and should receive a DISABLE button.
04EvidenceCODE COMPARE
The code that does this

Compatibility config drives the warning list and disable action

What it actually does
Readable Compat setup logicdeobfuscated/assets/seventv.Compat.3.1.22.js
fetch("https://7tv.io/v3/config/extension").then(e => e.json()).then(e => h.value = e);

function O() {
  chrome.permissions.request({
    permissions: ["management"]
  }, e => {
    d.value = e
  })
}

function T() {
  chrome.management.getAll(e => {
    var s, c;
    _.value.length = 0, f.clear(), _.value = e.filter(t => t.type === "extension");
    const i = [];
    for (const t of _.value) {
      const l = (c = (s = h.value) == null ? void 0 : s.compatibility) == null ? void 0 : c.find(r => r.id.includes(t.id));
      i.push([t, l ?? {
        id: [],
        issues: []
      }])
    }
    i.sort(([, t], [, l]) => t.issues.length > l.issues.length ? -1 : 1);
    for (const [t, l] of i) f.set(t, l)
  })
}

function x(e) {
  chrome.management.setEnabled(e.id, !1, () => {
    e.enabled = !1
  })
}
Readable render logic for warnings and the buttondeobfuscated/assets/seventv.Compat.3.1.22.js
b(D, null, {
  default: g(() => [c.issues.length ? (n(), o("div", J, [(n(!0), o(N, null, C(c.issues, (r, L) => (n(), o("div", {
    key: L,
    class: "ext-compat-concern"
  }, [a("h4", {
    style: E({
      color: k[r.severity]
    })
  }, m(r.severity.replace("_", " ")), 5), a("p", null, m(r.message), 1)]))), 128))])) : p("", !0)]),
  _: 2
}, 1024), c.issues.length && s.enabled ? (n(), o("div", Z, [a("button", {
  onClick: r => x(s)
}, "DISABLE", 8, ee)])) : p("", !0)
05EvidenceTHIRD PARTY LIST
Remote host involved in the compatibility decision
  • 7tv.io

    Receives the compatibility configuration GET request and returns the extension ID and issue list that the UI uses for matching.

Data recipients

7tv.io
Updated 17 September 2026amo-2794274