Skip to content

Configuration Properties

All properties live under spring.ai.acp.harness (or at the top level of a file imported with acp:).

Core

Property Default Description
spring.ai.acp.harness.enabled true Switches the auto-configuration off entirely.
spring.ai.acp.harness.runtime — Agent to run. Optional with exactly one adapter on the classpath.
spring.ai.acp.harness.workspace JVM working dir The agent's working directory. Must exist.
spring.ai.acp.harness.runtime-home temp dir Where adapters write agent config files. Never the workspace.
spring.ai.acp.harness.timeout 5m Longest a turn may take (max 24h).
spring.ai.acp.harness.model — Requested model. Negotiated.
spring.ai.acp.harness.mode — Requested session mode. Negotiated.
spring.ai.acp.harness.on-unsupported warn fail, warn or ignore.
spring.ai.acp.harness.provider.id — Provider as the agent names it. Negotiated.
spring.ai.acp.harness.provider.api-type — API dialect; names the credential env vars.
spring.ai.acp.harness.provider.base-url — Your own endpoint; makes its /models authoritative.
spring.ai.acp.harness.provider.api-key — Provider key. Never logged.
spring.ai.acp.harness.provider.headers — Extra provider headers.
spring.ai.acp.harness.tanzu-ai.enabled true Use a bound Tanzu AI Models service as the provider; see Tanzu AI Models.
spring.ai.acp.harness.tanzu-ai.service-name — Which bound service to use when there are several.

MCP and skills

Property Default Description
spring.ai.acp.harness.mcp-servers[n].name — Required, unique.
spring.ai.acp.harness.mcp-servers[n].url, .headers, .auth —, —, none HTTP transport. .auth is none, oauth or provided; only provided may omit .url.
spring.ai.acp.harness.mcp-servers[n].command, .args, .env — stdio transport.
spring.ai.acp.harness.mcp.on-server-failure warn warn or fail (Goose only).
spring.ai.acp.harness.mcp.detect-timeout 2s Wait for a load-failure report when fail.
spring.ai.acp.harness.mcp.oauth.mode web web or local. Needs spring-ai-acp-harness-client-mcp-oauth.
spring.ai.acp.harness.mcp.oauth.client-name app name Shown on consent screens.
spring.ai.acp.harness.mcp.oauth.base-url from request Public base URL for the redirect URI.
spring.ai.acp.harness.mcp.oauth.redirect-uri {baseUrl}/login/oauth2/code/{registrationId} Registered callback.
spring.ai.acp.harness.mcp.oauth.store by mode memory, jdbc or file.
spring.ai.acp.harness.mcp.oauth.file ~/.config/<app>/acp-mcp-oauth.json For store: file.
spring.ai.acp.harness.mcp.oauth.sign-in-timeout 5m How long a local sign-in waits.
spring.ai.acp.harness.mcp.oauth.allow-loopback false Allow http/loopback OAuth endpoints (development only).
spring.ai.acp.harness.skills[n].name, .path, .url, .ref, .token, .sha256 — See Skill properties.

Permissions, filesystem, terminal

Property Default Description
spring.ai.acp.harness.permissions.policy deny deny, allowlist, auto-approve or ask.
spring.ai.acp.harness.permissions.allowed-tools [] Tool names for allowlist.
spring.ai.acp.harness.filesystem.enabled false Answer fs/read_text_file.
spring.ai.acp.harness.filesystem.write false Also answer fs/write_text_file.
spring.ai.acp.harness.terminal.enabled false Answer terminal/*.
spring.ai.acp.harness.terminal.allowed-commands [] (any) Permitted command names.
spring.ai.acp.harness.terminal.output-limit 1MB Output kept per terminal.
spring.ai.acp.harness.terminal.command-timeout 5m Kill a command after this.
spring.ai.acp.harness.terminal.max-concurrent 8 Terminals per connection.

Pool, endpoint, protocol, integrations

Property Default Description
spring.ai.acp.harness.pool.max-processes 1 Agent processes to run. Raise for unrelated conversations in parallel. For OpenCode, also the number of users who can hold sessions at once, at about 650 MB each; see Processes, users and memory.
spring.ai.acp.harness.pool.max-sessions-per-process 32 Named sessions per process before another is preferred. For OpenCode, sessions per user.
spring.ai.acp.harness.pool.session-ttl 60m Idle time before a named session is closed.
spring.ai.acp.harness.pool.max-restarts 5 Replacements within five minutes before a connection is left down.
spring.ai.acp.harness.controller.* off See HTTP Endpoint.
spring.ai.acp.harness.console.* when in a terminal See Terminal Console; needs spring-ai-acp-harness-client-console.
spring.ai.acp.harness.protocol.max-version 1 Highest ACP version offered. v2 is refused.
spring.ai.acp.harness.protocol.strict false Fail, rather than clamp, when an agent answers a version it was not offered.
spring.ai.acp.harness.observations.enabled true Micrometer observations, when Micrometer is present.
spring.ai.acp.harness.chat-model.enabled true The AcpChatModel bean, when spring-ai-acp-harness-client-chatmodel is present.

Registry

Property Default Description
spring.ai.acp.harness.registry.enabled true Consult the registry for a runtime no adapter claims.
spring.ai.acp.harness.registry.url ACP CDN registry.json Catalogue location; file: pins a snapshot.
spring.ai.acp.harness.registry.cache ~/.spring-ai-acp/agents Snapshot and downloaded agents.
spring.ai.acp.harness.registry.refresh 24h Catalogue refresh interval.
spring.ai.acp.harness.registry.offline false No network: bundled snapshot and installed agents only.
spring.ai.acp.harness.registry.require-checksum true Refuse agents published without a SHA-256.
spring.ai.acp.harness.registry.download-timeout 10m Longest one download may take.

Runtime-specific (tier 3)

Described per runtime in Runtime Configuration.

Runtime Keys under spring.ai.acp.harness.runtimes.<id>
goose builtins, env, serve.transport, serve.host, serve.port, serve.startup-timeout, log-dir, mcp.answer-discover
codex package, command, args, home, config-toml, env
opencode command, args, config, config-file, env
registry ids args, env

Keys bind relaxed (config-toml, configToml and config_toml are one key), while nested keys keep their spelling because they end up verbatim in the agent's own config file.