Skip to content

Runners

June is runner-agnostic. The orchestrator owns webhooks, dedupe, session state, comment posting, and state transitions. The runner is whatever CLI you’ve already authenticated. Switch per task with a Linear label.

LabelRunnerResume?Good for
(default)Claude CodeYesThe default. Strongest tool use, best at long multi-file edits.
codexCodex CLIYesOpenAI’s frontier coder. Persists its own session id.
opencodeOpenCode CLIYesOpen-source CLI agent. Strong sandboxing via OPENCODE_PERMISSION.
geminiAntigravity (agy)NoGoogle’s agent (replaces deprecated gemini CLI). Auth via Antigravity desktop.
hermesHermes AgentNoLightweight, script-friendly. Stateless — each comment is a fresh run.

Modifier labels (compose with any runner):

LabelEffect
xhighForce --effort xhigh (Claude) or model_reasoning_effort="xhigh" (Codex).
fastFast mode: Claude → claude-opus-4-6; Codex → model_reasoning_effort="medium".
goalPrepend /goal to the first prompt so the agent keeps working across turns until the goal is met. Only fires on a fresh session — resumes inherit the active goal. Ignored on hermes and opencode (oneshot).

The child process starts from the configured agent root, strips ANTHROPIC_API_KEY (so the runner uses your claude login session, not a stray env var), uses --print mode, --permission-mode auto, and --effort max when supported. No --allowedTools allowlist — the runner has the full local toolset (Read/Edit/Write/Bash/Glob/Grep, Web*, MCP) gated by auto-mode rules.

Each issue gets its own session, persisted as claude_session_id. Resumes use --resume. If the stored session was created under a different agent root, June ignores it and starts fresh.

Auth: claude login once per machine.

Uses codex exec to start and codex exec resume to continue. Codex manages its own session ids; June stores them per issue. The xhigh and fast labels map to model_reasoning_effort.

Auth: codex login once per machine.

Runs opencode run --format json --dangerously-skip-permissions from LINEAR_CLAUDE_OPENCODE_ROOT. June stores the session id and resumes with --session <id>.

OpenCode is sandboxed by default — June injects a permission profile that denies external-directory access and arbitrary bash while allowing common local inspection and test commands. Override with LINEAR_CLAUDE_OPENCODE_PERMISSION.

Auth: per the OpenCode docs.

Runs agy -p --dangerously-skip-permissions --add-dir <agentRoot>. Auth flows through the Antigravity desktop app; the model is whatever that session is set to. Stateless — no session resume, every comment spawns a fresh agy invocation.

Replaces the old gemini CLI, which Google deprecates for non-Enterprise tiers on 2026-06-18. The label name gemini is kept for continuity.

Runs hermes -z <prompt>. Stateless — each comment spawns a fresh Hermes session. Uses normal Hermes model/provider config unless LINEAR_CLAUDE_HERMES_MODEL / LINEAR_CLAUDE_HERMES_PROVIDER are set explicitly.

June passes LINEAR_CLAUDE_HERMES_TOOLSETS (default terminal,web,skills,session_search,todo,code_execution) so Linear runs avoid the Hermes file/search_files loop bug while still being able to inspect and edit via terminal. Empty stdout on exit 0 is treated as a blocked runner failure — Hermes occasionally tool-loops out without an error code, and silent successes are worse than loud failures.

Why -z and not chat -Q -q: the chat-resume path silently produces empty stdout on multi-KB orchestrator prompts even when the agent’s internal session file writes a complete final_answer. -z is the canonical script-friendly entrypoint and works reliably.

Use the default (Claude Code) for most issues. Reach for the others when:

  • Codex (codex) — when you want a different model temperament on a tricky issue, or when Claude’s tool-use bill is getting heavy.
  • OpenCode (opencode) — when you want a stricter sandbox, or you’re testing the orchestrator’s sandboxing path.
  • Antigravity (gemini) — when you want a long-context pass on a sprawling repo (Gemini-class context window).
  • Hermes (hermes) — for short, scriptable, stateless tasks. Triage runs use Hermes’ style internally.