Developer release 0.4.2 · 16 October 2026

Privacy, in plain view.

KickShield is an independent product. Core controls work locally and require no account or network requests. Automatic ad detection and request blocking are unavailable.

Optional local observation

Stream Insights observes new rendered chat arrivals after you enable it. Existing rows are baseline only. The analytical sample holds at most 2,000 messages and excludes arrivals older than 15 minutes during processing or refresh; suspended tabs do not have a guaranteed wall-clock deletion timer. Message and sender IDs are used only where available; display names are not treated as identities. A separately labeled Observed names fallback uses bounded transient name keys from retained rows. Observed name and available sender-ID facts survive virtualization or text hydration within the same bounded sample; explicit deletion/expiry/disable clears them and never saved or exported; only numeric counts are exported. Explicit name filters entered by you can be saved as preferences. Removed and deleted rows lose their evidence text. Disabling Insights clears its analytical session. Native chat can continue using a shared feed of at most 2,000 currently rendered row records, including text, available IDs and DOM references. An unchanged attached row can remain longer than 15 minutes. Separate duplicate-suppression indexes hold at most 10,000 message IDs each; the source baseline index has no 15-minute expiry and is cleared when that source stops. The final chat consumer stopping, channel navigation and page exit release the shared collector and references. No raw chat is stored persistently or sent to a server.

Advanced analysis runs locally only when requested. Chromium uses its existing extension service worker, with one active bounded job, cooperative cancellation and no page iframe or artificial keep-alive. Firefox uses a bundled frame and dedicated worker, released after completion, cancellation or timeout. Runtime ports stay inside the extension; no analysis is sent to a server. Redacted export requires a preview and download action and excludes chat text, visible names, sender IDs, channel names and URLs. Findings describe observed patterns and never prove bots, humans, intent or dishonesty.

Optional session search

The standalone chat entry can lazily restore a deliberately saved per-channel chat opt-in without mounting player preferences or Insights. Session search requires a separate nonpersistent opt-in. It retains plain observed snapshots in memory, including a labeled baseline, while its panel is closed and across DOM virtualization. Bounds are 500 observations, 250,000 retained string characters including normalized keys, and a 15-minute age window, with ten results and a 100-character query. Stable message IDs deduplicate replays; ID-less observations are explicitly qualified. Observed deletion/edits and empty native clear redact applicable snapshots, but offscreen deletions cannot be guaranteed. Clear session, search/chat disable, global disable, channel navigation and page exit clear this cache. A one-shot expiry timer and subsequent execution enforce expiry; browser suspension cannot guarantee deletion at an exact wall-clock instant. No transcript is saved or exported, no hidden history is fetched and no raw chat leaves the tab.

Saved preferences

Extension storage can contain language, enabled state, pause deadline, timeout, explicit channel lists, filter profiles, layout, shortcuts, optional remembered volume, VOD positions and count-service consent. No cloud sync is used. Resetting core controls only resets core settings. Disable Insights to clear its session. Uninstall or clear extension data to remove all saved preferences.

Optional count connector

The separately hosted service is kickshield-counts.visionrp.workers.dev. It is disabled. Official API activation is on hold pending resolution of Kick Developer Terms section 3.5 and the manual-cover feature. New connections are unavailable in this build; developer app setup is deferred. Existing grants can be disconnected in the popup. A future activation would require separate consent for the exact optional hostname. Firefox also requests browsing-activity transmission consent. Declining leaves local controls working.

When connected and requested, up to ten channel slugs are sent per request, prioritizing the active stream and visible sidebar rows. Cloudflare receives ordinary connection metadata, including IP for transient rate limiting. Kick receives requested slugs and a server-side app token. No cookies, browser user token, raw chat or stream keys are sent by the extension.

The service stores a daily anonymous per-shard upstream-attempt budget. Count caches are in memory, fresh for 30 seconds and stale for at most ten minutes, with 50 entries per shard. It does not persist channel history, chat or client IPs at the application layer. Invocation logs and traces are disabled; sampled sanitized error codes may be logged. Provider infrastructure, security and retention policies still apply. Disconnecting clears queued extension requests and its cache, and removes the optional permission.

This website and diagnostics

This site stores only your selected language in localStorage. It uses no analytics, remote fonts or account system. Hosting receives ordinary page requests. Clear site data to delete the language preference. Diagnostics stay local unless you deliberately download or share a redacted preview. Never share passwords, cookies, raw chat or authenticated URLs.

The developer credit opens a separate website with its own policy. This privacy page and the extension homepage belong to KickShield, not the developer's portfolio.