Skip to main content

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-permissions for 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_turns guard 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: --yolo auto-approves all actions. No intermediate mode available in headless.
  • Max turns: Not supported as a CLI flag. Guard-only.
  • Session resume: --resume without 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 --cwd flag. Controlled via exec.Cmd.Dir.
  • Token reporting: Aggregated in the final result event, not per message.

Qwen CLI

Similar to Claude in many ways, but with a few differences.
  • Permission mode: --yolo for 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 --cwd flag. Controlled via exec.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 --dir flag.
  • Session resume: --session <ses_id> — session IDs use a ses_ prefix format.
  • Token reporting: Aggregated per step_finish event, 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.md and .cursorrules for 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.

Provider volatility

Agent CLIs are moving fast. Flags change, output formats evolve, features appear and disappear. Gump’s minimal contract with providers is: filesystem access + Git. If a provider breaks its structured output, Gump falls back to compat mode (raw stdout + git diff + fresh sessions). The workflow still runs — metrics become less granular until the adapter is updated.