ReadonlybuiltinReadonlyhookHook event names the harness fires.
ReadonlyinstructionInstruction-file targets the harness reads (also the h1 heading).
Optional ReadonlyknownMCP servers the harness provides itself, available to a contract WITHOUT the
plugin declaring them — e.g. Claude Code's built-in ide integration
(mcp__ide__getDiagnostics). The mcp-tool-resolves check allowlists these
so a reference to a built-in server is never flagged as an undeclared one.
Optional (additive, non-breaking for existing adapters) — defaults to none.
ReadonlymcpMatches an MCP tool reference, e.g. mcp__server__tool.
ReadonlynameStable identifier, e.g. "claude-code".
ReadonlyneverTools the platform never exposes to a subagent (a listed one is dead).
Optional ReadonlynoThe subset of hookEvents where a block decision (exit 2 / a deny field)
is SILENTLY IGNORED ENTIRELY — no veto AND no model feedback (Claude Code's
SessionStart / SessionEnd / Notification / PreCompact: exit 2 there writes
stderr only to the user). The basis for the hook-block-ineffective
"wrong-event" check, which fires ONLY on these (so it stays FP-safe and never
cries wolf on a PostToolUse feedback/nudge hook). Optional (additive,
non-breaking) — absent ⇒ the harness's block semantics are undeclared and the
check does not run for it.
Optional ReadonlypermissionThe subset of blocking events whose deny REQUIRES the structured
permissionDecision field (e.g. Claude Code's PreToolUse), where the
legacy top-level decision field is silently ignored. The basis for the
hook-block-ineffective "wrong-field" check. Optional (additive).
ReadonlypluginThe env token expanded to the plugin root in hook commands.
Optional ReadonlysideTools that PRODUCE side effects (write, exec, network, spawn) — the
complement of read-only within builtinAgentTools. The basis for
effect-surface analysis and the pure: contract: a tool here is denied to a
pure skill and counts toward a harness's side-effect surface. Bash is
listed (undecidable at the tool-name level → conservatively side-effecting);
an MCP tool not classifiable from the name is treated as unknown-effect.
Optional (additive, non-breaking) — absent ⇒ no tool is known-side-effecting.
ReadonlyskillWhich SKILL.md frontmatter keys this harness understands — the profile the compiler renders under:
"claude-code" — the full Claude Code set (name, description, plus the
CC-only keys: disable-model-invocation, argument-hint, …)."minimal" — name + description ONLY (the cross-tool SKILL.md shape Codex
and OpenCode read; CC-only keys are omitted because they'd be inert noise).
Built-in tools a subagent may list in its
tools:contract.