Native Kiro Agent Hooks
Event-driven automation that runs inside Kiro, using the v1 hook schema.
Each preset ships native Kiro Agent Hooks — Kiro's own event-driven automation
that runs inside the IDE. They use the v1 schema introduced in Kiro IDE 1.0 /
CLI 3.0: .json files in .kiro/hooks/ with a PascalCase trigger, an optional
regex matcher, and an action.
{
"version": "v1",
"hooks": [
{
"name": "Run Tests on Save",
"enabled": false,
"trigger": "PostFileSave",
"matcher": "\\.(test|spec)\\.[^/]+$",
"action": { "type": "agent", "prompt": "..." }
}
]
}Every preset gets four shared hooks plus domain-specific ones:
- Shared: Run Tests on Save, Spec Task Sync, Secret Scan on Save, Docs Drift Guard
- Domain-specific: two or more per preset, tailored to its stack
- Script hooks: Scout Block, Modularization Hook, Discord Notify, Telegram Notify
The exact set for each preset is listed in the preset reference, read from the preset manifests.
Every agent hook ships disabled ("enabled": false) so a fresh workspace
never starts an agent run you didn't ask for. action.type: "agent" consumes
credits; action.type: "command" does not.
Toggle one on in Kiro's Agent Hooks panel, or set "enabled": true. Each preset
also carries a hooks/native-hooks.md guide.
Script hooks
The cross-platform notifier and guard scripts (.js / .sh / .ps1) still ship in
hooks/. They are now registered as v1 command hooks rather than through
settings.json, and ship enabled — they cost no credits and no-op when their
environment variables are unset. Both kinds are listed separately on each preset's
reference page.
Upgrading from an earlier kit
Hooks installed by kit versions before this release use the retired 0.x .kiro.hook
format and will not run in Kiro IDE 1.0. Re-run kiro-kit init to install the v1
hooks, then delete any leftover .kiro.hook files — kiro-kit doctor warns about
ones it finds.
Two 0.x behaviours changed shape:
userTriggeredhooks no longer exist. On-demand automation now installs as manual steering files in.kiro/steering/, invoked as/<name>slash commands — for example/cost-estimateor/deep-scan-stale.settings.jsonhook registration is no longer read by Kiro. Presets no longer ship ahookskey there; a pre-existing one in your workspace is left untouched.