This page documents IDE 0.x behavior for users who haven't yet migrated to 1.0. For the current format, see the Features documentation.
In IDE 0.x, hooks were stored in .kiro.hook files. In IDE 1.0, hooks moved to .kiro/hooks/*.json files using a versioned JSON schema.
In IDE 0.x, hooks were created through a dedicated form UI:
The form fields were:
You could also open the Hook UI from the Command Palette with Cmd + Shift + P (Mac) or Ctrl + Shift + P (Windows/Linux) and typing Kiro: Open Kiro Hook UI.
In IDE 1.0, this form was replaced by a conversational flow — clicking + now pre-fills a prompt in chat and you work with the agent to configure the hook.
.kiro.hook to .kiro/hooks/*.jsonversion: "v1" JSON schema with structured when/then fieldsname, description, enabled, timeout{ "version": "v1", "hooks": [ { "name": "format-on-save", "description": "Run Prettier on saved TypeScript files", "enabled": true, "when": { "type": "fileEdited", "patterns": ["\\.ts$"] }, "then": { "type": "command", "command": "prettier --write {{filePath}}" }, "timeout": 10 } ] }
when.type value | Fires when | when.patterns matches |
|---|---|---|
sessionStart | Session begins | Not evaluated |
agentStop | Agent stops | Not evaluated |
promptSubmit | User sends a message | Not evaluated |
preToolUse | Before a tool executes | Tool name |
postToolUse | After a tool executes | Tool name |
fileCreated | A new file is created | File path |
fileEdited | A file is saved/modified | File path |
fileDeleted | A file is deleted | File path |
preTaskExecution | Before a spec task starts | Not evaluated |
postTaskExecution | After a spec task finishes | Not evaluated |
userTriggered | Triggered manually by user | Not evaluated |
command — Runs a shell command, receives JSON context on stdinagent — Injects a prompt into the agent's context at trigger timeFor the full migration details, see What's new in IDE 1.0 — Hooks.
In IDE 0.x, the Autopilot/Supervised toggle was the only mechanism for controlling agent behavior. In 1.0, a capability-based permissions.yaml layer was added beneath it for fine-grained control.
The IDE had two modes accessed via Settings → Agent → Agent Autonomy:
There was no way to allow some operations while blocking others — it was all-or-nothing.
The Autopilot/Supervised toggle still exists and works as before. What's new is a permissions.yaml layer that applies after the autonomy mode:
permissions.yaml rules can still deny or ask for specific capabilitiesallow rules in permissions.yaml can pre-approve trusted operations so they don't promptThis means you can use Autopilot mode without giving the agent unrestricted access — deny dangerous operations while allowing routine ones to proceed silently.
For the full permissions reference, see Permissions. For migration details, see What's new in IDE 1.0 — Permissions.
In IDE 0.x, terminal command approval was controlled through two settings: Trusted Commands and Command Denylist. In 1.0, this is replaced by permissions.yaml shell capability rules.
Configured in Settings → Kiro Agent: Trusted Commands at user or workspace level. Used prefix matching with * wildcards:
["npm install"] — exact match only["npm install *"] — partial wildcard (npm install with any args)["npm *", "git *"] — full wildcard (any npm/git command)["*"] — universal trust (all commands auto-approved)Matching rules:
* matches any characters after the prefix&&, |) were trusted if the first command matchedConfigured in Settings → Kiro Agent: Command Denylist. Used substring matching — if any denied pattern appeared anywhere in the command, approval was required regardless of trust settings.
Recommended denylist patterns:
{ "kiroAgent.commandDenylist": [ "rm -rf", "sudo", "chmod 777", "eval", "curl | sh", "wget | sh", "> /dev/", "mkfs", "dd if=" ] }
These settings are replaced by permissions.yaml shell capability rules:
# Equivalent of trustedCommands: ["npm *", "git *"] rules: - capability: shell match: ["npm *", "git *"] effect: allow # Equivalent of commandDenylist: ["rm -rf", "sudo"] - capability: shell match: ["rm -rf *", "sudo *"] effect: deny
Key differences:
kiroAgent.trustedCommands, kiroAgent.commandDenylist) no longer usedFor the full permissions reference, see Permissions.
In IDE 0.x, when the context window reached 80% of the model's limit, Kiro would summarize all messages in the conversation to bring the context length back below the limit. A context usage meter in the chat panel showed the current percentage.
/compact commandFor the current behavior, see Compaction.
In 0.x, the agent had a standalone diagnostics tool that read real-time error detection, syntax validation, and lint findings from your installed language extensions during execution. Installing language extensions and opening a file activated it automatically.
The standalone tool was removed. The agent still works with your code's language awareness through the built-in code analysis tools (read_code, semantic rename), and you can share language-server findings with the agent explicitly using the #Problems context key in chat. On the CLI, the code tool provides LSP-backed diagnostics alongside its other operations.
In IDE 0.x, agent configs were JSON-only and supported the same fields as CLI 2.x.
.kiro/agents/my-agent.json:
{ "name": "my-agent", "description": "A development agent", "prompt": "You are a senior developer", "model": "claude-sonnet-4", "tools": ["fs_read", "fs_write", "execute_bash"], "resources": ["file://AGENTS.md"] }
.md files with YAML frontmatter + body as system prompt)excludedTools, includeMcpJson, includePowers, resources (with skill:// URIs), permissions, welcomeMessageread, write, shell, web, @mcp, @builtin, *)hooks field is CLI-only; IDE ignores itFor the current format reference, see Custom agents.
In IDE 0.x, you chose between two session types when starting a new chat:
You selected the mode via a mode picker when launching a new session.
The Vibe/Spec mode picker was removed. Instead:
This means you no longer need to decide upfront whether a session will be "vibe" or "spec" — you can start conversationally and invoke structured workflows whenever needed within the same session.
For the current approach, see Starting a session, Built-in agents, and Specs.
IDE 0.x reference