Skip to content

Harness extensions

The [harness.<name>] section holds harness-specific configuration that has no portable equivalent.

[harness.claude_code]
view_mode = "focus"

[harness.claude_code.sandbox]
enabled = true
network = { allowedDomains = ["*.anthropic.com"] }

[harness.github_copilot]
"chat.agent.maxRequests" = 50
"chat.tools.global.autoApprove" = false

Rules

  • [harness.<name>] sections are passed through to the target harness without interpretation by theta-spec
  • When casting to harness X, only [harness.X] is read — all other [harness.*] sections are ignored
  • A single theta.toml MAY contain [harness.<name>] sections for multiple harnesses simultaneously
  • Typed fields are deserialized into typed structs and consumed during cast — all other fields are preserved as passthrough

Per-harness reference

Each harness reference page documents its typed fields, passthrough fields, config surface, and casting behavior.

Harness TOML key Reference
Claude Code [harness.claude_code] Harness-specific config
Cursor [harness.cursor] Harness-specific config
GitHub Copilot [harness.github_copilot] Harness-specific config
Codex CLI [harness.codex] Harness-specific config