Kiro Crew: AWS Shipped the Right Guardrails - and Moved the Governance Problem
- Kiro Crew is AWS's agent orchestration platform: hand it a ticket queue and it triages, dispatches, identifies owners and flags what needs you. It runs several conversations concurrently with isolated context and delegates to subagents.
- The guardrails are genuinely good and worth naming: denied-by-default commands, suspicious-pattern blocking, input validation, sensitive-path blocking, credential redaction, OS-level sandboxing, and signed audit logs. That is enforcement below the model, which is the correct placement.
- It reads as a vendor that learned from its own incident. CVE-2026-10591 had Kiro rewriting its own
mcp.jsonfrom hidden text on a web page; AWS's fix was protected paths, and Crew ships denied-by-default and sensitive-path blocking as day-one properties. - The new risk is the autonomy model, not the controls. Crew runs recurring jobs on schedules without requiring real-time human oversight, operating on code and CI. Approval-at-execution is deliberately not in the path.
- Fan-out changes blast radius arithmetic. One orchestrator dispatching N concurrent agents and subagents means a single bad instruction propagates in parallel, and attribution gets genuinely hard - *which* agent touched that repo?
- Per-product guardrails do not compose. A fleet running Crew, Claude Code and Cursor has three separate control planes and three audit formats. Excellent controls inside one product are not fleet governance.
Kiro Crew is AWS's agent orchestration platform, and the pitch is concrete: hand it a ticket queue and it triages and dispatches, identifies owners, and flags what needs your attention. It runs multi-step engineering workflows spanning repos, tools and time. You can run several conversations concurrently, each with isolated context, or delegate independent research and implementation to subagents. It runs locally or on a remote machine you control, through a desktop app, a web dashboard, or a TUI.
It also ships with a security posture that deserves to be named, because it is the posture this field has been asking for and rarely gets: denied-by-default commands, suspicious-pattern blocking, input validation, sensitive-path blocking, credential redaction, OS-level sandboxing, and signed audit logs - described as defense in depth from day one. This guide credits that properly, then examines what it does and does not solve, because the honest answer is that AWS solved the in-product problem well and relocated the fleet problem rather than closing it.
What AWS got right
Four things, and none of them are cosmetic.
- Denied-by-default commands. This is the correct default and almost nobody ships it, because allow-by-default demos better. It inverts the usual failure mode where a destructive command is possible until someone thinks to forbid it - the exact dynamic behind agents dropping databases.
- Sensitive-path blocking. The direct descendant of their own CVE-2026-10591 fix, where
mcp.json,.vscode/tasks.jsonand.gitmoved onto a protected-paths list. Blocking config and VCS paths closes the agent self-modification class at the file layer. - Credential redaction. Secrets do not transit where they do not need to. Given that MCP servers and agent shells inherit environment variables, redaction at the boundary is meaningful rather than decorative.
- Signed audit logs. The genuinely notable one. Most agent logging is a local text file that the agent itself could rewrite - which makes it a diary, not evidence. Signing makes the record tamper-evident, which is what you need for an incident timeline that survives scrutiny. See AI agent audit trail and logging.
Read alongside the CVE, this is a vendor that took a real finding and generalised from it instead of patching narrowly. That is worth saying plainly, and it also validates where enforcement belongs: below the model, in the harness, where a prompt cannot negotiate with it. Nothing here relies on the model choosing to behave.
What the autonomy model changes
The most consequential line in the announcement is not a security feature. It is that Crew runs recurring jobs on schedules without requiring real-time human oversight. That is the product working as designed - unattended execution is the value - and it means approval-at-execution is deliberately not in the path.
So the whole weight of safety shifts onto the policy configured beforehand. That is a reasonable trade and it is how CI has worked for twenty years. But CI jobs are deterministic, and an agent deciding what to do next from content it reads at 03:00 is not. Every question that a human would have caught by glancing at a diff now has to be pre-answered in policy, and the ones nobody anticipated resolve however the model resolves them, unobserved, on a schedule.
| Property | Why it is valuable | What it costs governance |
|---|---|---|
| Scheduled, unattended runs | Work happens without a human waiting | No approval at execution; policy must be complete in advance |
| Concurrent conversations, isolated context | Parallel throughput without cross-talk | Isolation cuts both ways - no single view of what the fleet of agents is collectively doing |
| Subagent delegation | Decomposes large work | Fan-out multiplies blast radius; attribution becomes *which* subagent |
| Spans repos, tools and time | Handles real workflows end to end | Blast radius is cross-repo and persistent, not per-session |
| Ticket-queue driven | Removes dispatch toil | Tickets are untrusted input. Anyone who can file one can address the agent |
| Local or remote execution | Fits how teams work | Two deployment shapes to inventory and govern, not one |
The ticket-queue row deserves emphasis because it is easy to miss. If an agent triages a queue, then the queue is an input channel, and in most organisations filing a ticket is open to a wide population - sometimes including customers. Ticket text reaching an agent that can act on repos and CI is the same structural problem as a poisoned web page reaching Kiro in CVE-2026-10591, with a lower barrier to entry. Treat ticket bodies as untrusted content, and be careful about what an agent is permitted to do purely on their instruction.
Why good in-product controls are not fleet governance
Here is the structural limit, and it is not a criticism of the implementation. Crew's guardrails govern Crew. They are configured in Crew, enforced by Crew, and recorded in Crew's audit log. Meanwhile the same engineers are running Claude Code, Cursor, Copilot CLI and a set of MCP servers. Each has its own permission model, its own defaults, its own log format, and its own idea of what a sensitive path is.
That produces two concrete problems. Policy does not compose: *no writes to CI configuration* has to be expressed separately in each product's vocabulary, and drift between them is invisible until something slips through the weakest one. And evidence does not reconcile: answering *what did our agents do to this repository last week* means correlating several formats by hand, and only some of them are signed. This is the same gap as Entra Agent ID governing registered agents but not installed ones - excellent coverage of one region, with the seams between regions ungoverned.
There is also an inventory precondition, which Crew's own flexibility makes sharper: it runs locally or on a remote machine you control, through a desktop app, web dashboard or TUI. Those are different footprints. Knowing which endpoints and which remote hosts are running orchestration - and what each is scheduled to do unattended - is a discovery problem before it is a policy problem, and orchestrators arrive the way AI agents became the new shadow IT: adopted by a team that found them useful.
How Anomity fits
Anomity operates at the layer between products. The unprivileged Endpoint Sensor runs on Windows, macOS and Linux and inventories eight AI artifact types per endpoint - AI agents, MCP servers, extensions, plugins, skills, secrets, hooks and CLIs - so an orchestrator on a laptop or a self-managed host is an inventoried artifact with a first-seen timestamp rather than a team's private tooling choice.
Where an agent exposes a control point - for example the PreToolUse event in Claude Code - Anomity evaluates each call against policy and returns allow, deny, or log before it runs, and decisions land in one queryable 90-day audit trail routed to SIEM, Slack, email, or Jira. The point is not to replace Crew's guardrails, which are better than most and should stay on. It is that runtime governance expressed once, applied across every agent your fleet runs, is what makes *no writes to CI configuration* a fleet property instead of six product settings. Anomity collects metadata only, with on-endpoint secret redaction, is SOC 2 Type II, and complements existing tooling. See how it works.
You can't govern what you can't see.The Anomity principle
If you are adopting Kiro Crew
- Turn on and keep the shipped controls - denied-by-default commands, sensitive-path blocking, credential redaction, sandboxing. They are the good defaults; the failure mode is a team loosening them for one urgent job and never restoring them.
- Inventory where it runs. Local installs, remote hosts you manage, desktop app, web dashboard and TUI are different footprints, and unattended jobs on an unlisted host are the ones nobody reviews.
- Enumerate every scheduled job and treat the schedule as a standing grant of authority. Ask what each one is allowed to do at 03:00 with nobody watching, and whether that is still true six months from now.
- Treat ticket text as untrusted input. If the agent triages a queue, anyone who can file a ticket can address the agent - constrain what it may do on ticket instruction alone.
- Scope credentials per job rather than per platform. Fan-out means a broad credential is exercised by many agents in parallel, which is how one over-grant becomes a fleet-wide blast radius.
- Decide how you attribute actions across concurrent agents and subagents before you need to. Isolated context is good for correctness and bad for reconstruction, so verify the audit log distinguishes which subagent did what.
- Export the signed audit log into the same place your other agent evidence lands, so one query spans Crew, Claude Code, Cursor and MCP activity - see how to audit AI agent activity.
- Express your destructive-action policy once, outside any single product, and verify it holds in each - see least privilege for AI agents, Claude Code permissions and hooks hardening, and the destructive database guardrails guide.
- Extend your AI agent incident response playbook to unattended multi-agent runs: who pauses a schedule, how you establish which subagent acted, and how quickly you can revoke a job's credentials.
Kiro Crew is the most security-literate agent orchestrator to ship so far, and the shipped controls are the ones we would ask for - denied-by-default, sensitive paths, redaction, sandboxing, and a tamper-evident log. Credit where it is due, and it is also evidence that enforcement belongs below the model rather than in a prompt. What it does not do - what no single product can - is govern the seams. Scheduled, unattended, fanned-out execution across repos and CI raises the stakes on visibility precisely because approval is no longer in the path, and a fleet running several agent platforms has several control planes and several logs. Adopt Crew's guardrails, then make sure the same policy holds everywhere else your agents run. For the wider picture see securing AI coding agents and CLIs, ADLC for lifecycle placement, and Entra Agent ID for the identity half. To see which endpoints and hosts run agent orchestration today, request early access.
Frequently asked questions
What is Kiro Crew?
Kiro Crew is AWS's AI agent orchestration platform for automating multi-step engineering workflows that span repositories, tools and time. The headline use case is handing it a ticket queue, which it triages and dispatches, identifying owners and flagging what needs human attention. It can run several conversations concurrently with isolated context, and delegate independent research and implementation to subagents. It runs locally or on a remote machine you control, and you interact with it through a desktop app, a web dashboard or a TUI. It also supports recurring jobs that run on schedules without requiring real-time human oversight.
What security controls does Kiro Crew ship with?
A genuinely strong set, described as defense in depth from day one: denied-by-default commands, suspicious-pattern blocking, input validation, sensitive-path blocking, credential redaction, OS-level sandboxing, and signed audit logs. Denied-by-default is the standout because almost nobody ships it - allow-by-default demonstrates better, at the cost of every destructive command being possible until someone thinks to forbid it. Signed audit logs are the other notable one, because most agent logging is a local text file the agent itself could modify, which makes it a diary rather than evidence. Signing makes the record tamper-evident.
Is Kiro Crew a response to the earlier Kiro vulnerability?
It certainly reads as a vendor that generalised from its own finding. CVE-2026-10591 was a High-severity flaw where hidden 1-pixel text on a web page could make Kiro rewrite its own ~/.kiro/settings/mcp.json without approval and auto-reload it, launching an attacker-defined MCP server as code execution. AWS's fix was to move sensitive files - mcp.json, .vscode/tasks.json and .git - onto a protected-paths list requiring explicit approval, enforced in the most autonomous mode as well as the supervised one. Crew shipping denied-by-default commands and sensitive-path blocking as day-one properties is the same principle applied from the start rather than retrofitted.
What new risks does scheduled, unattended execution introduce?
Approval at execution stops being available, by design. That is the value of unattended runs, and it means the entire weight of safety shifts onto policy configured in advance. CI has worked this way for two decades, but CI jobs are deterministic, whereas an agent decides what to do next based on content it reads at the time. So every judgement a human would have made by glancing at a diff must be pre-answered in policy, and anything nobody anticipated gets resolved however the model resolves it, unobserved, on a schedule. The practical implication is that each scheduled job should be treated as a standing grant of authority and reviewed as one, including whether it should still exist in six months.
Why does subagent fan-out matter for security?
Two reasons. Blast radius arithmetic changes: one orchestrator dispatching many concurrent agents and subagents means a single bad instruction or over-broad credential is exercised in parallel rather than once, so the same mistake produces a larger effect in less time. And attribution becomes materially harder - isolated context is good for correctness but means there is no single view of what the collection of agents is collectively doing, so reconstructing which subagent touched a given repository requires that the audit log distinguishes them. Decide how you will attribute actions before you need to, rather than during an incident.
Why is a ticket queue an untrusted input channel?
Because filing a ticket is usually open to a wide population, sometimes including customers, and if the agent triages the queue then ticket text reaches an agent that can act on repositories and CI. Structurally that is the same problem as a poisoned web page reaching Kiro in CVE-2026-10591, with a considerably lower barrier to entry - no need to get the developer to visit anything. So treat ticket bodies as untrusted content in the same way you would a fetched web page or an MCP tool response, and constrain what the agent is permitted to do purely on the instruction of a ticket.
If Crew's guardrails are good, why isn't that enough?
Because they govern Crew. They are configured in Crew, enforced by Crew, and recorded in Crew's log, while the same engineers are also running Claude Code, Cursor, Copilot CLI and a set of MCP servers - each with its own permission model, defaults, log format and definition of a sensitive path. That creates two gaps. Policy does not compose: a rule like no writes to CI configuration has to be restated in each product's vocabulary, and drift between them is invisible until something slips through the weakest one. And evidence does not reconcile: answering what did our agents do to this repository last week means correlating several formats by hand, only some of which are signed. Strong in-product controls plus ungoverned seams is the normal state, and the seams are where incidents live.
What should we do first when adopting it?
Two things before any policy work. Inventory where it actually runs, since local installs and self-managed remote hosts are different footprints and an unattended job on an unlisted host is the one nobody reviews. Then enumerate every scheduled job and write down what each is permitted to do with nobody watching. After that, keep the shipped controls on - the realistic failure mode is a team loosening denied-by-default for one urgent job and never restoring it - scope credentials per job rather than per platform, treat ticket text as untrusted, and export the signed audit log into wherever your other agent evidence lands so one query covers your whole fleet rather than one product.




