diff --git a/website/docs/reference/environment-variables.md b/website/docs/reference/environment-variables.md index 16949979c738..9473ac605c41 100644 --- a/website/docs/reference/environment-variables.md +++ b/website/docs/reference/environment-variables.md @@ -748,6 +748,7 @@ Advanced per-platform knobs for throttling the outbound message batcher. Most us | `HERMES_QUIET` | Suppress non-essential output (`true`/`false`) | | `CODEX_HOME` | When [Codex app-server runtime](../user-guide/features/codex-app-server-runtime) is enabled, override the directory Codex CLI reads its config + auth from (default: `~/.codex`). Hermes' migration writes the managed block to `/config.toml`. | | `HERMES_KANBAN_TASK` | Set by the kanban dispatcher when spawning a worker (task UUID). Workers and the spawned `hermes-tools` MCP subprocess inherit it so kanban tools gate correctly. Don't set manually. | +| `HERMES_ACP_SKIP_CONFIGURED_MCP` | Set by an [ACP host](../user-guide/features/acp#host-integration) on the Hermes subprocess it spawns. `1` skips starting the globally configured `config.yaml` MCP servers before the ACP JSON-RPC loop, for hosts that pass the session's MCP servers through `session/new` themselves. Servers supplied by the ACP session are still registered; any other value keeps the default. Don't set manually. | | `HERMES_API_TIMEOUT` | LLM API call timeout in seconds (default: `1800`) | | `HERMES_API_CALL_STALE_TIMEOUT` | Non-streaming stale-call timeout in seconds (default: `90`). Auto-disabled for local providers when left unset, and may scale upward for very large contexts. Also configurable via `providers..stale_timeout_seconds` or `providers..models..stale_timeout_seconds` in `config.yaml`. | | `HERMES_STREAM_READ_TIMEOUT` | Streaming socket read timeout in seconds (default: `120`). Auto-increased to `HERMES_API_TIMEOUT` for local providers. Increase if local LLMs time out during long code generation. | diff --git a/website/docs/user-guide/features/acp.md b/website/docs/user-guide/features/acp.md index ccdaabc5832d..4983465d2fd0 100644 --- a/website/docs/user-guide/features/acp.md +++ b/website/docs/user-guide/features/acp.md @@ -156,6 +156,28 @@ ACP mode uses the same Hermes configuration as the CLI: Provider resolution uses Hermes' normal runtime resolver, so ACP inherits the currently configured provider and credentials. Hermes also advertises a terminal auth method (`--setup`) for first-run ACP clients; this opens Hermes' interactive model/provider setup. +## Host integration + +These variables are set by an **ACP host process** (an editor or another agent +harness) on the Hermes subprocess it spawns. They are not user configuration — +do not set them by hand in `.env` or `config.yaml`. + +| Variable | Value | Effect | +|----------|-------|--------| +| `HERMES_ACP_SKIP_CONFIGURED_MCP` | `1` | Skip starting the **globally configured** MCP servers from `config.yaml` before the ACP JSON-RPC loop begins. | + +Hermes normally starts every MCP server configured in `config.yaml` before it +enters the ACP JSON-RPC loop. A host that owns MCP itself — passing the +session's servers explicitly through `session/new` — does not need that global +startup, and an unrelated slow or interactive MCP server would otherwise delay +`initialize`. Setting the marker to exactly `1` lets such a host skip it. + +Only the global `config.yaml` discovery is skipped. **MCP servers supplied by +the ACP session through `session/new` are still registered**, so a host loses +no capability it asked for. Any other value (unset, empty, `0`, `false`) keeps +the default behavior, so an unrelated truthy-looking string cannot silently +disable MCP. + ## Session behavior ACP sessions are tracked by the ACP adapter's in-memory session manager while the server is running.