mirror of
https://github.com/langchain-ai/deepagents.git
synced 2026-08-26 18:16:58 -04:00
ffab82a945
The project MCP server approval prompt now offers an "always allow" option that saves approved servers to `config.toml`, with an all/custom/none picker so you choose exactly which servers to persist. --- The project-level MCP server approval prompt (`dcode` startup) only offered per-session, fingerprint-based trust. This adds an "always allow" choice (`a`/`always`) that persists approved servers to `[mcp].enabled_project_servers` in the user-level `config.toml`, so they load by name on future runs without re-prompting — even if the config content changes. Rather than presuming the whole list, "always allow" now lets you choose *which* servers to save via an `[a]ll / [c]ustom / [n]one` menu. `custom` reprints the servers numbered and accepts a `1,3`-style selection; a single prompted server skips the menu. The writer only ever touches the user's home `config.toml` (never a repo file), preserving the boundary that a committed `.mcp.json` can't self-approve. --- ## ⚠️ Breaking change (migration) This branch evolved past the original design above. As shipped, "always allow" persists **fingerprint-scoped** approvals under `[mcp].enabled_project_server_approvals` (bound to project root + server-definition fingerprint, so a changed command/URL re-prompts) via an arrow-key checkbox picker — not the flat, name-based `[mcp].enabled_project_servers` list or the `all/custom/none` text menu described above. Consequences for anyone who adopted the previous per-server trust feature (`[mcp].enabled_project_servers`, shipped in `0.1.33`/`0.1.34`): - The legacy `[mcp].enabled_project_servers` TOML key is now **ignored** (a debug-only log warns; the key is preserved on write, not deleted). - The env override `DEEPAGENTS_CODE_ENABLED_PROJECT_MCP_SERVERS` is renamed to `DEEPAGENTS_CODE_DANGEROUSLY_ENABLE_PROJECT_MCP_SERVERS` (still name-based and project-agnostic — the explicit escape hatch). - **Interactive `dcode`:** affected servers move back to the approval prompt; re-approve once with `a`. Safe, mildly annoying. - **Non-interactive / `dcode mcp login`:** affected servers silently stop loading (no prompt in these surfaces). Re-run `dcode` in the project to persist a scoped approval, or set `DEEPAGENTS_CODE_DANGEROUSLY_ENABLE_PROJECT_MCP_SERVERS` to keep the old name-based behavior. This is fail-closed (no server loads with *less* scrutiny than before), so it is a safety-preserving break. Made by [Open SWE](https://openswe.vercel.app/agents/6cb9d698-5a31-5568-306a-9ff7a3f4356b) --------- Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>