Skip to content

Privacy and threat model

CauseScope is designed for local development. It has no account system, telemetry, analytics, cloud service, or upload endpoint.

Data it can observe

Depending on configuration and the selected element, CauseScope can observe:

  • instrumented JSX expression operands and results;
  • current props and hook state for the selected React component path;
  • observed Fetch/XHR request metadata and bounded response bodies;
  • storage operations made after instrumentation is installed;
  • explicitly configured React Query caches and Zustand stores.

This access is powerful. Do not enable CauseScope on a public or untrusted development deployment.

Redaction

Built-in rules redact authorization, cookie, API-key, token, password, and secret variants. Matching covers common camelCase, snake_case, and kebab-case forms. Custom rules extend rather than replace defaults. JSON and Markdown exports perform redaction again.

No automatic redaction system can understand every domain-specific secret. Add project-specific keys and review every export before sharing it.

The exported fields, compatibility rules, and synthetic example are documented in the trace export contract.

Recording bounds

Defaults limit the runtime to 10,000 trace nodes, 200 timeline events, 1 MB per response, 20 MB of response data in total, object depth 5, and 100 array entries. Object getters are never invoked for diagnostics.

Disable optional observation when it is unnecessary:

ts
causeScope({
  traceNetwork: false,
  traceStorage: false,
});

Editor endpoint

The editor endpoint accepts only a CauseScope POST request, resolves real paths, and rejects files outside the Vite project root. Set openInEditor: false when this capability is not required.

Built for local evidence, not another dashboard.