Runtime Configuration¶
Each agent has settings of its own that ACP does not standardize: Goose's built-in extensions, Codex's sandbox, OpenCode's per-tool permissions. They live in the third configuration tier, one block per runtime:
spring:
ai:
acp:
harness:
runtime: goose
runtimes:
goose: { builtins: developer } # used: goose is selected
codex: { config-toml: { model_reasoning_effort: high } } # ignored until codex is selected
opencode: { config: { share: disabled } } # ignored until opencode is selected
-
Only the selected runtime reads its block. Blocks for the others are inert, so an application can keep settings for every agent it supports side by side. A block for an id that no adapter or registry can supply fails startup, which catches a misspelled runtime name.
-
Applied last. Whatever the adapter derives from portable properties (provider credentials, a bring-your-own endpoint) is written first, and the tier-3 block is laid over it.
envtherefore wins over every variable the adapter sets. For the config-file blocks the merge is by top-level key, so a top-level key you set replaces the adapter's value for that key, including a whole table. -
Any property source works. Top-level keys bind relaxed, while nested keys keep the spelling you wrote, because they end up verbatim in a file the agent parses:
-
Files are written to
spring.ai.acp.harness.runtime-home(a directory under the JVM's temp directory by default), never to the workspace.
Tip
Prefer the portable property whenever one exists. It keeps working when you swap agents, and the negotiated ones report what was applied. Use tier 3 for what is genuinely agent-specific.
| To set… | Use | Not |
|---|---|---|
| Model, mode, provider | spring.ai.acp.harness.model, .mode, .provider |
GOOSE_MODEL, GOOSE_MODE, model in config-toml or config |
| MCP servers | spring.ai.acp.harness.mcp-servers |
Goose extensions, Codex mcp_servers, OpenCode mcp |
| Skills | spring.ai.acp.harness.skills |
OpenCode skills paths |
| Instructions | <workspace>/AGENTS.md |
OpenCode instructions, unless you need more than one file |