Provider Quirks
Each agent CLI has its own behavior, flags, and limitations. Gump’s adapters handle the differences, but understanding them helps when debugging or choosing agents.Claude Code
The most full-featured adapter. Supports all session modes, reports cost natively, and has granular token breakdowns per message.- Permission mode: Gump uses
--dangerously-skip-permissionsfor headless auto-approval. This is the only mode that works reliably in automated workflows. - Max turns: Supported via
--max-turns. - Session resume:
--resume <uuid>continues the conversation. - Working directory:
--cwd <path>sets the worktree.
Codex
Runs in sandbox mode with network disabled by default.- Permission mode: Gump uses sandbox mode (
--full-auto). Network is disabled inside the sandbox — agents can’t make HTTP calls. - Max turns: Not supported as a CLI flag. Gump relies on the
max_turnsguard instead. - Session resume:
resume <thread-id>— the thread ID format is specific to Codex. - Token reporting: Per turn, not per message. Less granular than Claude.
- Shell classification: Codex emits shell events differently — turn classification is reconstructed (lower confidence).
Gemini CLI
Uses auto-approve mode with implicit session resume.- Permission mode:
--yoloauto-approves all actions. No intermediate mode available in headless. - Max turns: Not supported as a CLI flag. Guard-only.
- Session resume:
--resumewithout an argument. Gemini resumes the last session for the current working directory. Since each run has its own worktree, this naturally targets the right session. - Working directory: No
--cwdflag. Controlled viaexec.Cmd.Dir. - Token reporting: Aggregated in the final
resultevent, not per message.
Qwen CLI
Similar to Claude in many ways, but with a few differences.- Permission mode:
--yolofor auto-approve. - Max turns:
--max-session-turns <N>(note the different flag name from Claude’s--max-turns). - Allowed tools: Passed as separate arguments, not a comma-separated list. Gump restricts to filesystem and shell tools only (no web search, no web fetch) for reproducibility.
- Working directory: No
--cwdflag. Controlled viaexec.Cmd.Dir. - Session resume:
--resume <uuid>— UUID format, same as Claude.
OpenCode
The most different adapter. Uses file-backed stdout instead of piped streams.- Stdout handling: OpenCode blocks on
StdoutPipe(). Gump writes stdout to a temp file and reads it from there. - Working directory: Native
--dirflag. - Session resume:
--session <ses_id>— session IDs use ases_prefix format. - Token reporting: Aggregated per
step_finishevent, not per message. - Exit codes: OpenCode is the only provider where exit code 1 is meaningful (indicates a step failure, not a crash).
Cursor CLI
Shares the Claude Code adapter with minor additions.- Context files: Uses both
CLAUDE.mdand.cursorrulesfor context. - Behavior: Otherwise identical to Claude Code — same flags, same session format, same token reporting.
Cross-provider limitations
- Session resume across agents: Blocked. Claude session IDs don’t work with Qwen, and vice versa. Gump validates format at the engine level.
- Cost reporting: Only Claude and Cursor report cost natively. For other providers, Gump estimates cost from token counts and published pricing.
- Tool restrictions: Each provider has different tool names. Gump maps them internally but can’t add tools the provider doesn’t support.