Configuration guidance shaped for scanability, day-two clarity, and operator context.
AGENT.md defines an AGH agent: structured frontmatter plus a required Markdown prompt body.
Current AGH agents live in AGH resource directories, not in the draft RFC .agents directory:
Non-empty. Must match the requested agent name when loaded by name.
Agent identity and discovery key.
provider
string
[defaults].provider
Built-in provider key or custom provider key.
Provider used to resolve command, model, and API key metadata.
command
string
Provider command
Non-empty when overriding.
Agent-specific ACP launch command.
model
string
Provider default_model
Any string.
Agent-specific model metadata.
tools
string array
empty
Exact canonical ToolIDs or namespace-prefix wildcards.
Additional agent tool allowlist grammar.
toolsets
string array
empty
Canonical ToolsetIDs.
Additional named tool bundles allowed for the agent.
deny_tools
string array
empty
Exact canonical ToolIDs or namespace-prefix wildcards.
Tool denies that always narrow the agent grants.
permissions
string
[permissions].mode, default approve-all
deny-all, approve-reads, approve-all
Agent-specific permission mode.
mcp_servers
array of MCP server objects
empty
Each object requires name and command.
Agent-local MCP servers.
hooks
array of hook declarations
empty
Same declaration shape as config hooks.
Agent-scoped hook declarations.
Markdown body
Markdown text
required
Non-empty after trimming.
Startup prompt sent as the agent system prompt.
Even when tools and toolsets are empty, AGH adds the discovery toolsets agh__bootstrap and
agh__catalog at runtime unless effective policy denies them. Agents should discover AGH-native
runtime capabilities with agh__tool_search, inspect descriptors with agh__tool_info, and invoke
dedicated tools before shelling out to equivalent agh ... commands. Operator-only management
flows — daemon lifecycle, MCP OAuth login/logout, raw secret writes, and trust-root config —
remain CLI/HTTP/UDS by design and are not promoted into the tool surface.
---# Required. This must match the directory name when loaded by name.name: reviewer# Optional if [defaults].provider is set in config.toml.provider: claude# Optional. Defaults to the provider default_model.model: claude-sonnet-4-6# Optional. Add only extra ToolIDs beyond default discovery.tools: - "mcp__github__*"# Optional. Add only extra toolsets beyond agh__bootstrap + agh__catalog defaults.toolsets: - "agh__coordination"# Optional. Denies always narrow the allowed set.deny_tools: - "agh__network_send"# Optional. Defaults to [permissions].mode.permissions: approve-reads# Optional. Merged after top-level and provider MCP servers.mcp_servers: - name: github command: npx args: ["-y", "@modelcontextprotocol/server-github"] secret_env: GITHUB_TOKEN: "env:GITHUB_TOKEN"# Optional. Agent-scoped hooks automatically match this agent name.hooks: - name: reviewer-started event: session.post_create mode: async command: printf args: ["reviewer ready\n"]---You are a senior code reviewer.Review code for correctness, security boundaries, data loss, races, and missing tests.Put blocking findings first and cite the relevant file or symbol.
Exact canonical ToolIDs such as agh__skill_view, or namespace-prefix wildcards such as agh__skill_* and mcp__github__*. *, dotted names, hyphens, uppercase, suffix wildcards, and mid-segment wildcards are rejected.
Description
Additional agent tool allowlist grammar consumed by the registry policy layer. It does not raise authority above [permissions].mode; default discovery still comes from the runtime overlay unless denied.
Canonical ToolsetIDs such as agh__catalog or linear__read.
Description
Additional named tool bundles allowed for the agent. Toolsets are separate from tools; do not place toolset IDs in tools. AGH adds agh__bootstrap and agh__catalog at runtime by default unless denied.
Agent hook declarations use the same fields as [[hooks.declarations]] in config.toml. When a
hook matcher includes agent_name, it must match this agent's name; AGH then scopes the hook to
this agent.
Field
Type
Default
Valid values
Description
name
string
required
Non-empty.
Hook name.
event
string
required
Current dot-form hook event.
Event that triggers the hook.
mode
string
async
sync or async; sync only for sync-eligible events.
Dispatch mode.
required
boolean
false
true or false; required hooks must be sync.
Whether hook failure blocks the source operation.
priority
integer
Agent-definition source default.
Integer.
Ordering priority.
timeout
duration
0s; subprocess executor uses 5 seconds when zero.
Non-negative Go duration.
Hook timeout.
matcher
object
scoped to this agent.
Hook matcher fields.
Narrows eligibility.
command
string
empty
Required for subprocess hooks unless nested executor fields are used.
These snippets show the minimal agent shape for the core built-in providers. API-key providers such
as OpenRouter, z.ai, Moonshot/Kimi, and Vercel AI Gateway use the same provider and model
frontmatter once their credential slots are configured in config.toml or settings.
---name: claude-reviewerprovider: claudemodel: claude-sonnet-4-6permissions: approve-reads---Review the requested change for correctness and missing tests.
The Tools and Toolsets rows describe configured agent policy. Effective runtime discovery also
adds agh__bootstrap and agh__catalog by default. Denies still win after that overlay.
The current parser rejects these draft RFC fields as unknown.
Field
RFC purpose
Current behavior
description
Human description.
Rejected.
skills.inherit
Control inherited skills.
Rejected.
skills.disabled
Disable inherited skills for one agent.
Rejected.
skills.extra_sources
Add agent-specific skill roots.
Rejected.
memory.inherit
Control inherited memory.
Rejected.
memory.scope
Default write scope for memory.
Rejected.
memory.auto_consolidate
Agent-scoped memory consolidation.
Rejected.
RFC examples also use permission values such as plan and paths such as .agents/<name>/AGENT.md.
Current AGH uses deny-all, approve-reads, approve-all and .agh/agents/<name>/AGENT.md.