Harness mappings

This page is informative, not part of the specification. It records where each harness keeps its agents and how an installer translates each CAF field. Harnesses change their formats often; corrections are welcome by pull request.

Cells marked † are taken from third-party documentation and have not been checked against the harness's own docs.

Where agents live

Harness ID Project file User file Native format
Claude Code claude-code .claude/agents/<name>.md ~/.claude/agents/<name>.md Markdown + YAML frontmatter
GitHub Copilot copilot .github/agents/<name>.agent.md ~/.copilot/agents/<name>.agent.md Markdown + YAML frontmatter
Codex codex .codex/agents/<name>.toml ~/.codex/agents/<name>.toml TOML
Gemini CLI gemini-cli .gemini/agents/<name>.md ~/.gemini/agents/<name>.md Markdown + YAML frontmatter
Cursor cursor .cursor/agents/<name>.md ~/.cursor/agents/<name>.md Markdown + YAML frontmatter
OpenCode opencode .opencode/agents/<name>.md † ~/.config/opencode/agents/<name>.md † Markdown + YAML frontmatter
Grok Build grok .grok/agents/<name>.md † ~/.grok/agents/<name>.md † Markdown †
Kilo Code kilo .kilo/agents/<name>.md † † Markdown †
Antigravity antigravity .agents/agents/<name>.md † † Markdown †

Field mappings

"Warn" means the harness has no equivalent: the installer leaves the field out and tells the user. "Refuse" means leaving it out would give the agent more access than its definition allows, so the installer stops unless the user accepts that.

Claude Code

CAF Claude Code
name, description name, description
body Markdown body
model tiers inherit → inherit, fast → haiku, balanced → sonnet, strong → opus
effort effort
tools tools: read → Read; search → Glob, Grep; edit → Edit, Write, NotebookEdit; execute → Bash; web → WebFetch, WebSearch; agent → Agent; todo → TodoWrite; mcp:s → mcp__s; mcp:s/t → mcp__s__t
disallowed-tools disallowedTools, same mapping
max-turns maxTurns
skills skills (preloaded); bundled skills go to .claude/skills/
mcp-servers mcpServers (inline entries)
invocation.model: false Warn
invocation.user: false Warn
harness/claude-code/files/ copied into .claude/

GitHub Copilot

CAF Copilot
name, description name, description
body Markdown body (cloud agent limit: 30,000 characters)
model tiers Installer table; inherit leaves model unset
effort Warn
tools tools: capability names are Copilot's own aliases; mcp:s → s/*; mcp:s/t → s/t
disallowed-tools Expanded into an allowlist in tools. Refuse if tools is absent and the remaining set cannot be listed.
max-turns Warn
skills Bundled skills go to .github/skills/; not preloaded
mcp-servers mcp-servers (cloud agent only; ignored by IDEs, so warn when the user installs for VS Code)
invocation.model: false disable-model-invocation: true
invocation.user: false user-invocable: false
metadata metadata

Codex

CAF Codex
name, description name, description
body developer_instructions (TOML multi-line string)
model tiers Installer table; inherit leaves model unset
effort model_reasoning_effort
tools without execute features.shell_tool = false
tools without edit Refuse: Codex agents cannot override sandbox_mode, so file access follows the parent session
tools without web web_search = "disabled" †
tools without read / search Warn (advisory restriction)
max-turns Warn
skills Bundled skills go to .agents/skills/; not preloaded
mcp-servers Warn: agents inherit the session's mcp_servers. Offer to add them to config.toml.
invocation Warn

Gemini CLI

CAF Gemini CLI
name, description name, description
body Markdown body
model tiers Installer table
effort Warn
tools tools †: read → read_file; search → glob, grep_search; edit → write_file, replace; execute → run_shell_command; web → web_fetch, google_web_search
max-turns max_turns †
skills, mcp-servers, invocation Warn

Gemini CLI subagents do not inherit tool permissions, so an absent tools field is written as the full list of built-in tools.

Cursor

CAF Cursor
name, description name, description
body Markdown body
model tiers inherit → inherit, fast → fast, others → installer table
tools without edit and execute readonly: true †
any other binding tools restriction Refuse
advisory tools restriction Warn
effort, max-turns, skills, mcp-servers, invocation Warn