Model, harness, framework
- Model: predicts text and tool calls. Sonnet, GPT, Gemini, GLM, a local model.
- Harness: a ready-to-run agent program around a model. It reads your files, calls tools, asks permission and loops until the task is done. Claude Code, Codex CLI, OpenCode, goose, Aider and Gemini CLI are harnesses.
- Framework: a library for building your own agent, such as LangGraph or an agents SDK. You write the loop; a harness ships one.
The six parts of a rig
| Part | Claude Code | Codex CLI | OpenCode | goose | Gemini CLI |
|---|---|---|---|---|---|
| Project rules | CLAUDE.md (or AGENTS.md) | AGENTS.md | AGENTS.md | AGENTS.md, .goosehints | GEMINI.md |
| MCP tools | claude mcp add, .mcp.json | codex mcp add, config.toml | "mcp" in opencode.json | extensions: in config.yaml | mcpServers in settings.json |
| Permissions | allow/deny rules + permission modes | --sandbox read-only / workspace-write | "permission" allow/ask/deny | — | — |
| Specialist agents | .claude/agents/*.md subagents | — | agents (--agent) | recipes | — |
| Headless run | claude -p | codex exec | opencode run | goose run | gemini -p |
| Machine output | --output-format json | --json (JSONL) | --format json | recipe response schema | --output-format json |
"—" means we didn't verify an equivalent in the official docs on Oct 18, 2026, not that none exists.
How to choose one
- Start with the models you can use. Claude plan → Claude Code. ChatGPT plan → Codex (or OpenCode with ChatGPT sign-in). Local or mixed → OpenCode, goose or Aider.
- Then the job. Unattended CI wants clean headless flags; private files want a local model and tight permissions; long documents want reviewable changes.
- Then portability. Keep rules in
AGENTS.mdand you can switch harnesses without rewriting them. See AGENTS.md vs CLAUDE.md.
FAQ
What is a coding agent harness?
The program that runs a model as an agent: it loads project rules, offers tools such as file edits, shell and MCP servers, enforces permissions and loops until the task is done. Claude Code, Codex CLI and OpenCode are examples.
Is a harness the same as an agent framework?
No. A framework (LangGraph, an agents SDK) is a library you build an agent with. A harness is a finished agent you configure.
Does the harness change benchmark scores?
Leaderboards like Artificial Analysis score harness + model pairs. Within one harness, effort settings alone move Claude Code with Sonnet 5.5 from 42.1 to 68.4 on AA's index.
Get new rigs by email
New job recipes and harness changes, a few times a month. Each one with copy-ready config and dated sources.
Sources
- Artificial Analysis: Coding Agent Index v1.5 · checked Oct 18, 2026
- Claude Code docs: CLAUDE.md, AGENTS.md and memory · checked Oct 18, 2026
- Claude Code docs: MCP · checked Oct 18, 2026
- Claude Code docs: permissions · checked Oct 18, 2026
- Claude Code docs: subagents · checked Oct 18, 2026
- Claude Code docs: run Claude Code programmatically · checked Oct 18, 2026
- Codex docs: AGENTS.md · checked Oct 18, 2026
- Codex docs: MCP · checked Oct 18, 2026
- Codex docs: non-interactive mode · checked Oct 18, 2026
- OpenCode 1 docs: rules · checked Oct 18, 2026
- OpenCode 1 docs: MCP servers · checked Oct 18, 2026
- OpenCode 1 docs: permissions · checked Oct 18, 2026
- OpenCode 1 docs: CLI · checked Oct 18, 2026
- goose docs: .goosehints and AGENTS.md · checked Oct 18, 2026
- goose docs: extensions (MCP) · checked Oct 18, 2026
- goose docs: CLI commands · checked Oct 18, 2026
- goose docs: recipe reference · checked Oct 18, 2026
- Gemini CLI docs: GEMINI.md · checked Oct 18, 2026
- Gemini CLI docs: MCP servers · checked Oct 18, 2026
- Gemini CLI docs: headless mode · checked Oct 18, 2026
Spotted something out of date? Email sternberg@mail.grokbot.com.