Documentation Index
Fetch the complete documentation index at: https://springaicommunity.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
The Problem
Each agentic CLI has its own safety controls with different defaults. Without coordination, some providers work out of the box while others block on preconditions that users don’t expect:| Provider | Autonomous Flag | Non-Git Directory | Out of Box? |
|---|---|---|---|
| Claude Code | yolo=true | Works | Yes |
| Codex | fullAuto=true | Blocked by skipGitCheck | No |
| Gemini CLI | yolo=true | Works | Yes |
AgentClientMode
AgentClientMode is a portable enum that controls default permissiveness across all providers:
LOOSE — optimized for evaluation and development, where friction during onboarding is the primary failure mode.
What Each Mode Does
- LOOSE (default)
- STRICT
Permissive defaults that minimize preconditions:
| Provider | Effect |
|---|---|
| Codex | skipGitCheck=true — works in any directory |
| Claude | No change (already permissive) |
| Gemini | No change (already permissive) |
Configuration
Set the mode via Spring properties:Precedence Rules
Options are resolved in this order (first wins):- Explicit goal options — passed at call time via
AgentClient.run(goal, options) - Builder defaults — set on
AgentClient.builder().defaultOptions() - Spring properties — provider-specific values in
application.yml - Mode-derived defaults — LOOSE or STRICT baseline
- Hardcoded defaults — built into each provider’s options class
STRICT Is a Baseline, Not a Lock
Explicit property overrides always take precedence over mode-derived defaults:SDK Layer Stays Neutral
The mode system operates at the agent-models layer, not the SDK layer. Provider SDKs (codex-cli-sdk, claude-agent-sdk, gemini-cli-sdk) always reflect their CLI’s native defaults. Direct SDK consumers are never affected by AgentClientMode.
This means:
ExecuteOptions.builder().build()→skipGitCheck=false(Codex CLI native default)CodexAgentPropertieswithmode=LOOSE→isSkipGitCheck()returnstrue(mode-derived)
Migration from Pre-0.14.0
Before 0.14.0, Codex defaulted toskipGitCheck=false. If you relied on this: