J MARKBRANDS

Home Ad Guard

Privacy policy

Updated October 11, 2026 · Applies to Home Ad Guard version 0.2.0

Analysis and learned hiding rules require a saved OpenRouter API key, accepted disclosure, and an exact hostname in Settings' Sites allowed for analysis list. The list starts empty, including when upgrading older settings. Subdomains require separate approval. Paused and never-analyse sites take precedence. Approve public browsing sites only: password/payment checks do not identify all private pages.

The popup's Block Ads button adds only the displayed exact hostname to the approved list. Allow Ads removes that approval and stops analysis there. Neither accepts disclosure or overrides never-analyse rules. An exact pause can be resumed with Block Ads; broader pause rules require a Settings change.

Key storage and network requests

The key is a plain string in chrome.storage.local, restricted to TRUSTED_CONTEXTS before background handlers initialize. Content scripts receive only the current site's gate, layout settings and eligible rules through background messages. They cannot read local extension storage. This is not encryption against access to your Chrome profile. The key is not stored in Chrome Sync.

The only automatic network destination is https://openrouter.ai. The key is sent as a Bearer authorization header over HTTPS. Requests omit cookies and referrers and reject redirects. There is no author-operated collection endpoint, telemetry, analytics or crash reporting in the extension. Settings has user-clicked links to the Jev/OpenRouter documentation and OpenRouter keys page.

Save & test calls /api/v1/key with the key and no browsing content, even before disclosure acceptance. This verifies key authentication only, not model access, available credits or classification. Older TypeSafe keys are not copied to the separate OpenRouter key field.

Browsing data sent

Uncached candidates on approved sites are submitted to /api/alpha/decisions in batches. Requests contain:

Page titles, candidate text, ARIA roles/labels, iframe titles, IDs, selectors, fingerprints, full URLs/query strings, form values, cookies, screenshots and the page body are not included in API payloads. Hostnames and request timing can still reveal browsing activity. Requests are authenticated to your OpenRouter account and are not anonymous. Removing text can reduce classification accuracy.

Sensitive pages and cancellation

Rendered password fields and recognized payment iframes stop analysis. Candidates with editable fields are excluded. Checks cover the scanner's supported open shadow roots and same-origin frames; they are not universal detection of confidential information. Checks run before queued submission, on scans, relevant DOM attribute changes, and focus events.

Pending requests and retry waits are cancelled when a page becomes sensitive, navigates away, loses site approval, is disabled/paused, or the key changes or is cleared. Late responses are discarded. Requests already received by OpenRouter or TypeSafe cannot be recalled. DOM detection and cancellation are asynchronous.

Continuing analysis on long visits

Approved pages continue scanning with at most 200 candidates and ten submissions per rolling minute, up to 40 candidates per batch and one active submission per tab. Queue size is bounded. The daily token budget still applies. Local gate checks run every thirty seconds while a page is visible and on returning to a tab/connectivity; those checks do not themselves call OpenRouter. Changed descriptors may require new decisions rather than using old cached results. This can increase usage on long visits. Local text hashes used to notice changes are not sent to OpenRouter or persisted. Explicit restores and Not an ad corrections remain honored.

Local records

Persistent storage includes the key, settings, hostname-keyed decision fingerprints/probabilities, learned CSS selectors, corrections, usage counters and runtime health. Hostnames and selectors can reveal browsing activity. Decision lifetimes are one to seven days; learned rules have a fourteen-day lifetime. Expired records are removed by cache maintenance or excluded when read.

Session storage holds per-tab hostnames, counts and structural hidden-element summaries without candidate text. Tabs' records are removed on close; Chrome clears session storage when the extension/browser session ends. Older session summaries are removed once when migrating this local build.

Settings can remove the key, clear decision caches/corrections and purge learned rules. Key removal cancels pending work and drops the cached client, but does not revoke the key at OpenRouter. Local deletion does not delete data previously submitted to OpenRouter or TypeSafe. Uninstalling removes extension storage.

OpenRouter and TypeSafe handling

OpenRouter receives the minimized request and forwards it to TypeSafe to run typesafe/jev-1.13. Your OpenRouter key is sent only to OpenRouter by this extension, not directly to TypeSafe. OpenRouter and TypeSafe each have their own policies. This is not anonymous browsing: hostname, account and request timing remain visible.

OpenRouter's data collection, provider logging and privacy policy describe metadata retention and account-controlled logging/provider policies. Account-level input/output logging or Broadcast may expose request content to additional configured destinations. This extension does not change or verify your account settings or guarantee zero retention. TypeSafe's privacy policy also applies to downstream processing.

On first migration to OpenRouter, the extension preserves site approvals and ordinary settings, changes the model, resets disclosure acceptance, and clears old decision caches, learned rules and session summaries. Saved older TypeSafe keys are left unused. You must save your own OpenRouter key and accept the new disclosure before analysis resumes. Cost displays remain estimates, not billing records. The Decisions endpoint is alpha and may change.

Publisher and contact

Publisher: jm.albrechtsen. Privacy and support contact: info@jmarkbrands.com. Updated October 11, 2026. This independently modified fork is based on fazlerocks/jev-adblock; it is not an official OpenRouter or TypeSafe product.

The publisher receives no browsing requests through an author-operated server. Browsing metadata is used to provide the user-facing ad classification feature. Review the downstream policies and account logging settings before use.