Any client that speaks OpenAI or Anthropic works out of the box.
Interception depends on the tool letting you point its model API base URL at deeCtx, not on which IDE you use. If a tool can override its base URL, deeCtx can mask its traffic. deectx setup discovers and wires Claude Code, Codex, and opencode for you automatically.
Dynamic routing: one proxy, both providers
Requests are routed by the shape of your API key: sk-ant-… → Anthropic upstream, sk-… → OpenAI upstream, and unknown keys fall back to the upstream matching the request's wire format. Codex and Copilot CLI connect over a /v1/responses WebSocket that is masked and rehydrated per frame, through the same fail-closed gate.
What works today
- OpenAI-compatible chat: /v1/chat/completions, including streaming (SSE) responses, rehydrated in real time.
- Anthropic-compatible messages: /v1/messages.
- Codex and Copilot CLI via the /v1/responses WebSocket: masked and rehydrated per frame.
- Cursor: turnkey shim included in the repo.
- opencode: turnkey shim included in the repo.
- Claude Code: auto-wired by `deectx setup`, or point its base URL at the proxy manually.
- Any LangChain / OpenAI SDK caller with a configurable base_url or OPENAI_BASE_URL.
- One proxy for both wire formats: requests route to your OpenAI or Anthropic upstream by API-key shape.
Know the limits
- Model APIs with a non-OpenAI/Anthropic wire format (e.g. Gemini native REST, Bedrock-native), as-is, without a new adapter.
- Non-text / binary outputs (images, blobs) are not rehydrated; they pass through already masked.
- Vendor-locked assistants with no configurable API endpoint (GitHub Copilot Chat, JetBrains AI Assistant): a known v1 gap, since interception depends on the tool exposing a custom base URL. OAuth-locked accounts on otherwise-wired tools (e.g. Claude Pro/Max) are skipped by `deectx setup`.
- deeCtx is not a remote proxy or network filtering firewall; it is specific to your local model traffic.
Coverage by editor and assistant.
| Editor | Assistant / tool | Covered |
|---|---|---|
| VS Code | Continue, Cline, Cody, Roo Code | Yes |
| VS Code | GitHub Copilot Chat / inline | No |
| Visual Studio | OpenAI-compatible extensions | Yes |
| Visual Studio | Copilot | No |
| JetBrains | Continue / OSS plugins | Yes |
| JetBrains | AI Assistant | No |
| Eclipse | OpenAI-compatible plugins | Yes |
| Eclipse | Copilot4Eclipse | No |
| Any terminal | Claude Code, Codex, Copilot CLI (via /v1/responses WS) | Yes |
| Any terminal | opencode, Aider (via env var) | Yes |
Vendor-locked assistants with no configurable API endpoint are an accepted v1 gap; they'd require MITM interception via a root certificate, which is on the post-v1 roadmap.
Turn on coverage per regulation, per project.
Packs are YAML rule sets. Set active_packs inconfig.toml to turn one on. The same format supports custom packs for anything not shipped in-tree (HIPAA, PCI, and similar are possible, community-maintained).
- email (regex)
- credit_card (regex + Luhn)
- api_key (secrets + entropy, redact)
- person, address (NER)
- Article 9 special categories: health, biometric, ethnicity, religion, politics, union, sex, race, flagged as alerts
- email, phone, IBAN (Mod97 checksum)
- tfn (ATO checksum)
- medicare_number
- bsb_account
- driver_licence_au
- passport_au
- centrelink_crn
active_packs = ["gdpr", "cdr-au"]