mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-06-14 03:15:58 +00:00
474c89bac2
* fix(security): do not bind-mount host CLI auth dirs by default The Compose stack bind-mounted the entire ~/.claude and ~/.codex dirs (read-only) into the root gateway container in every configuration -- exposing not just credentials but full conversation history, per-project session data, and global CLI config. The default OpenAI-compatible model providers and the local sandbox never use them. Move the mounts to an opt-in docker/docker-compose.cli-auth.yaml overlay. Document env-token paths (CLAUDE_CODE_OAUTH_TOKEN, CODEX_AUTH_PATH) in .env.example -- the Gateway credential loader reads env first, so most setups need no mount at all. Document the exposure and per-mode options in SECURITY.md. Reported by @greatmengqi. * docs: clarify ACP adapter auth and add Claude single-file credential option - ACP adapters authenticate independently (many take an env API key like ANTHROPIC_API_KEY and need no mount); the cli-auth overlay is only for adapters that read the full CLI config dir. Avoids steering users toward mounting the whole dir for ACP when env auth usually suffices. - Add CLAUDE_CODE_CREDENTIALS_PATH (single .credentials.json) as a Claude one-file option, matching codex CODEX_AUTH_PATH and the README. * docs: cite claude-code-acp env auth and CLAUDE_CONFIG_DIR in ACP guidance Replace the generic 'some adapters' wording with the verified behavior of the common claude-code-acp adapter (env ANTHROPIC_API_KEY startup + CLAUDE_CONFIG_DIR), so the 'no ~/.claude mount needed for ACP' guidance is backed by a concrete adapter.
42 lines
2.3 KiB
Markdown
42 lines
2.3 KiB
Markdown
# Security Policy
|
|
|
|
## Supported Versions
|
|
|
|
As deer-flow doesn't provide an official release yet, please use the latest version for the security updates.
|
|
Currently, we have two branches to maintain:
|
|
* main branch for deer-flow 2.x
|
|
* main-1.x branch for deer-flow 1.x
|
|
|
|
## Reporting a Vulnerability
|
|
|
|
Please go to https://github.com/bytedance/deer-flow/security to report the vulnerability you find.
|
|
|
|
## CLI Credential Mounts (Claude Code / Codex)
|
|
|
|
DeerFlow can reuse your Claude Code / Codex CLI subscription login as a model
|
|
provider (`ClaudeChatModel`, the Codex provider) or for ACP agents that run the
|
|
CLI in-container. The Compose stack used to bind-mount the **entire** `~/.claude`
|
|
and `~/.codex` directories (read-only) into the gateway container in **every**
|
|
configuration — exposing not just credentials but full conversation history,
|
|
per-project session data, and global CLI config. A gateway compromise (prompt
|
|
injection, tool/MCP misuse, RCE) would leak all of it.
|
|
|
|
These directories are **no longer mounted by default**. Supply CLI credentials
|
|
with the least exposure that fits your setup:
|
|
|
|
| Need | How | Exposure |
|
|
|------|-----|----------|
|
|
| Claude model provider | env `CLAUDE_CODE_OAUTH_TOKEN` / `ANTHROPIC_AUTH_TOKEN` (via `.env`), or `CLAUDE_CODE_CREDENTIALS_PATH` → a single mounted `.credentials.json` | none / one file |
|
|
| Codex model provider | env `CODEX_AUTH_PATH` pointing at a single mounted `auth.json` | one file |
|
|
| ACP agent | the adapter's own auth — many ACP adapters take an env API key (e.g. `ANTHROPIC_API_KEY` / `OPENAI_API_KEY`) and need no mount; use the opt-in `docker/docker-compose.cli-auth.yaml` overlay only if your adapter reads the full CLI config dir | none / full dir |
|
|
|
|
The Gateway credential loader checks environment variables **before** the
|
|
default credential files, so the env-token paths need no bind mount at all. ACP
|
|
adapters authenticate independently of DeerFlow via their own documented env —
|
|
for example the common `claude-code-acp` adapter starts as
|
|
`ANTHROPIC_API_KEY=… claude-code-acp` and honors `CLAUDE_CONFIG_DIR` to redirect
|
|
its config directory, so it needs no `~/.claude` mount at all. Prefer the
|
|
adapter's documented env auth, and reach for the
|
|
`docker-compose.cli-auth.yaml` overlay only as a fallback for an adapter that
|
|
genuinely reads the full CLI config directory.
|