The format
An agent is a Markdown document with two parts:- YAML frontmatter — the machine-readable declaration: name, model, tool permissions, budgets.
- A Markdown body — the agent’s instructions. This becomes its system prompt.
Frontmatter reference
description is not a comment
The description does real work at runtime. When a workflow runs your agent, the orchestrator reads the
description to compose that step’s briefing, and reflects the agent’s stated role back at it. Other agents
deciding whether to delegate also see only the name and description.
A vague description produces a vague briefing. Write it as a precise statement of what the agent does and
what it produces:
allowed-tools restricts, it doesn’t grant
Listing a tool doesn’t create capability that doesn’t exist — it narrows the agent to a subset of what the
harness already offers. See the tool reference for valid names.
Restricting tools is a real design technique, not just hygiene. An agent that shouldn’t modify code should
not be given shell, and a verifier that must stay honest should not be given the ability to report
findings. Console’s own policy-fix-verifier works this way: it is deliberately read-only so its verdict
can’t be self-serving.
Budgets: maxIterations and timeout
Both are ceilings, not targets. Leave them unset unless the agent is an outlier.
- Raise
maxIterationsfor agents that legitimately need many tool calls — a broad scan across a large repository. - Raise
timeoutfor orchestrators, whose wall clock includes every child they spawn. Set it above the worst-case sum of the children’s durations.
sequential-spawns
By default an agent may spawn several sub-agents at once. Setting sequential-spawns: true makes a second
concurrent spawn return an error instead of queuing, which forces the agent to observe each child’s result
before starting the next.
Use it for orchestrators whose steps depend on each other. It applies only to the agent that declares it —
children are free to fan out.
Writing one in the web console
Open Agents and create an agent. The editor is a Markdown editor with:- Frontmatter linting — malformed YAML is flagged as you type.
- A model picker — selecting a model rewrites the
model:line in place, so what you see in the frontmatter is always what will run. - Folders — organize agents as the list grows.
Writing one in the CLI
The CLI loads agent definitions from the filesystem, so an agent is just a file:AMPLIFY_AGENTS_DIR. Definitions load at startup, so restart the CLI after
adding one.
Shadowing a built-in agent
Give your agent the samename as one Console ships and yours takes precedence. This is the supported way
to change built-in behavior — a workflow step referencing that name keeps working and picks up your
version.
Next steps
Tool reference
Valid
allowed-tools values and what each does.The agent library
Built-in agents worth reading as examples.
