# Privacy Policy — SupportLens **Effective Date:** September 15, 2026 **Extension Name:** SupportLens **Architecture:** Chrome Extension (Manifest V3) --- ## 1. Core Privacy Principle: 100% Local Processing (Zero External Transmission) **SupportLens does NOT collect, transmit, store, or share any user data, browsing history, network traffic, or diagnostic files with any external servers, cloud services, analytics platforms, or third parties.** - **No Remote Servers or Telemetry**: The extension contains zero outbound network requests (`fetch`, `XMLHttpRequest`, `WebSocket`, or beacon calls) to any external server or telemetry endpoint. There are no tracking scripts, third-party analytics libraries, or external CDNs included in the package. - **Audited TypeScript Codebase**: 100% of the extension codebase is built from static TypeScript with automated AST security tests confirming zero unsafe DOM sinks (`innerHTML`, `outerHTML`, `document.write`, `eval`). - **Strict Content Security Policy (CSP)**: The extension enforces `script-src 'self'; object-src 'none';`, preventing any external script execution or unauthorized data exfiltration. - **Local User Custody**: All diagnostic data captured during a session is held temporarily in local browser memory (`RAM`) and saved directly to your computer's local `Downloads` folder via the `chrome.downloads` API. You retain 100% ownership and control over when files are created, viewed, shared, or deleted. --- ## 2. Information Captured (User-Initiated Only) The extension remains completely dormant until you explicitly click **"Start Capture & Reload"** in the extension popup. When a capture session is active on the current tab, the extension records: 1. **Network Traffic Archive (`network_*.har`)**: - HTTP/HTTPS request and response headers, status codes, timings, and payload sizes captured via the Chrome DevTools Protocol (`Network` domain). - Optional response bodies (if enabled in Capture Settings). 2. **Full Performance & System Trace (`trace_*.json`)**: - Full Chrome DevTools Performance multi-track trace (`Tracing` domain: Network, Filmstrip screenshots, Frames, Memory counters, GPU, V8 JS Flame Chart), V8 CPU profile (`Profiler` domain), WebGL GPU renderer, Core Web Vitals, and display metrics. 3. **Chrome DevTools Recorder User Flow (`user_flow_*.json`)**: - Step-by-step user interaction and navigation recording (`setViewport`, `navigate`, `click`, `change`, `keyDown`, `scroll`) with ARIA, CSS (`data-testid`), XPath, Pierce, and Text selectors following the `@puppeteer/replay` specification. 4. **Runtime & Console Error Logs (`errors_*.json`)**: - Uncaught JavaScript exceptions, `console.error` / `console.warn` messages, browser log entries, and failed HTTP 4xx/5xx network status codes. 5. **Live 1080p Tab Screen Video (`video_*.webm`)**: - A continuous video recording of the active tab screen strictly capped at **1080p (`1920x1080` @ 1x scale)** resolution even on 4K/8K displays, recorded from session start until you click Stop & Finalize. 6. **Webpage Screenshot (`screenshot_*.png` / `*.jpg`)**: - A static visual capture of the rendered webpage strictly limited to **1080p (`1920x1080` @ 1x scale)** resolution. --- ## 3. Automatic Credential & Sensitive Data Redaction To protect your security when sharing diagnostic bundles with support engineers, **Redact sensitive tokens & cookies** is **ENABLED BY DEFAULT** (`redactSensitiveData: true`). Before any `network_*.har`, `trace_*.json`, `user_flow_*.json`, or `errors_*.json` file is written to disk, the built-in sanitizer (`HarSanitizer`, `ErrorRecorder`, `ProfileRecorder`, and `UserFlowRecorder`) automatically masks: - **Authentication Headers**: `Authorization` (Bearer, Basic, etc.), `X-API-Key`, `X-Auth-Token`, `Private-Token`, `X-CSRF-Token`, and `Secret-Token` values are replaced with `[REDACTED]`. - **Cookies**: All `Cookie` and `Set-Cookie` header values and cookie objects are masked as `[REDACTED]` while preserving cookie names for debugging. - **URL Query Parameters & Basic Auth**: Any URL parameters matching `token`, `access_token`, `auth`, `key`, `api_key`, `secret`, `password`, `session`, `sid`, `code`, or `jwt`—as well as HTTP Basic Auth credentials (`https://user:password@host`)—are replaced with `[REDACTED]`. - **JSON, Form & Input Payloads**: Sensitive keys inside request POST bodies, captured response bodies, user flow input values (`type="password"`, tokens, API keys), and console error strings are recursively masked. --- ## 4. Chrome Permissions Justification The extension requests the minimum permissions necessary to perform diagnostic captures: | Permission | Purpose & Scope | | :--- | :--- | | **`activeTab`** | Grants temporary access strictly to the currently active browser tab when you explicitly open the extension and click Start Capture. | | **`debugger`** | Required to attach the Chrome DevTools Protocol (`CDP 1.3`) to the active tab to capture HAR network timings, live 1080p screencast frames, console/runtime errors, DevTools performance traces, user flows, and 1080p viewport screenshots. Chrome displays a visible banner (`"SupportLens - Bug & Diagnostic Capture" started debugging this browser`) whenever CDP is attached. | | **`offscreen`** | Required by Chrome Manifest V3 to run an isolated local `MediaRecorder` / `` encoder that converts incoming 1080p CDP screencast frames into a downloadable `.webm` video file in local memory. | | **`downloads`** | Used exclusively to save the resulting `network_*.har`, `trace_*.json`, `user_flow_*.json`, `video_*.webm`, `screenshot_*.png`, and `errors_*.json` files directly to your local computer's Downloads folder. | | **`storage`** | Used exclusively via `chrome.storage.local` to save your extension settings (e.g., manual stop preference, video capture toggle, cache bypass, redaction toggle) locally in your browser. | *Note: The extension does **not** request broad `` host permissions or background `tabs` tracking permissions.* --- ## 5. User Control & In-Page Transparency - **Visual Indicators**: Whenever a recording session is active, both Chrome's native debugger banner and a top-right floating HUD widget (`Recording • req • err • time`) are displayed on the page. - **Instant Termination**: You can stop and finalize—or completely cancel—the recording at any time directly from the webpage floating HUD widget (`⏹ Stop & Finalize` / `✕`) or from the extension popup. - **Data Deletion**: Because all captured data is saved solely to your local `Downloads` folder and no copies exist on any remote server, deleting the downloaded files from your computer permanently removes all captured information. --- ## 6. Changes to This Privacy Policy Any updates to this Privacy Policy will be documented in this file and packaged with subsequent releases of the extension. ## 7. Contact If you have questions or security inquiries regarding this extension or its privacy practices, please contact your support team or repository maintainer.