Crew gives an AI agent real tool access — file reads, shell commands, web browsing. The security model is defense-in-depth: multiple independent layers, each enforced at the runtime boundary rather than relying on prompt instructions alone.
Every tool call passes through these checks in order:
Audit (SEL) records every decision at every step — it's cross-cutting, not a sequential gate.
The OS sandbox hides credential paths from agent subprocesses. Configure from Settings → Security or via kirocrew config set agent.sandbox <mode>.
| Mode | What's hidden | What's accessible | Best for |
|---|---|---|---|
auto (default) | .gnupg, .gcloud, .azure, .docker | .aws, .ssh, .kube | Most users — allows git-over-SSH and AWS CLI |
strict | All of the above + .aws, .ssh, .kube | Only ~/.ssh/known_hosts | Locked-down deployments |
off | Nothing | Everything | When you understand the trade-off |
On Linux the sandbox uses user/mount namespaces. On macOS it uses Seatbelt profiles. Windows does not currently have this OS-level layer — all other protections still apply.
Control how the agent gets permission to run tools. Configure from Settings → Security or the per-session Autopilot toggle.
| Level | What happens |
|---|---|
| Interactive (default) | Every tool call prompts for approval in the dashboard or messaging channel |
| Trust this command | Session-scoped auto-approval for this exact tool + args |
| Trust this tool | Session-scoped auto-approval for the tool with any args |
| Autopilot | All tools auto-approved for this session (deny rules still apply) |
Denied commands and sensitive-path blocks are never bypassed — even in Autopilot mode.
137 built-in patterns block destructive operations and common credential-exfiltration paths. Examples:
rm -rf /, rm -rf ~git push to protected branches (main, mainline)cat ~/.aws/credentials, cat ~/.ssh/id_rsacurl 169.254.169.254 (IMDS metadata)aws ec2 terminate-instances, cdk destroy, DROP TABLEecho $AWS_SECRET*, credential-revealing commandsManage from Settings → Security — you can disable individual rules, disable all rules, or add your own custom patterns.
Credentials are protected at multiple levels:
.aws, .ssh, .gnupg, .env, and other credential files through tool callsEach messaging channel is locked to authorized users:
KIROCREW_OWNER_ID (single owner)allow_all_users opt-in)Non-authorized messages are silently dropped and recorded in the audit log.
Optional policy and profile files compose with a tightest-wins model. A running app or agent can narrow the allowed scope but cannot loosen the ceiling.
~/.kiro/crew/security_policy.json)~/.kiro/crew/profiles/)Inspect from the CLI:
kirocrew policy show # display effective policy kirocrew policy validate # check policy files for errors kirocrew policy explain # explain how a tool call would be evaluated
Every tool call, approval, denial, and security event is recorded. Inspect from the CLI:
kirocrew security events # view recent security events kirocrew security audit # view the audit trail kirocrew security verify # verify audit-log integrity
The audit log is included in snapshots and can be reviewed from the dashboard under Settings → Security.
agent.sandbox at auto or strict — don't run with off unless you have a specific reasonFor the full security architecture including implementation details, see the repo's security deep dive.
Security