Policy, budgets & audit
Autonomy is only useful if you can bound it. These are the controls that make it reasonable to leave an agent running.
Budgets
Set per-conversation and per-day caps in USD. A run that crosses one is stopped mid-flight — not reported afterwards, which is too late to matter. The chat bar shows a live budget status and blocks sending when a cap is reached.
Cost comes from the API's own usage figures, not an estimate, and cache hits are credited at their real rate. The 📊 usage dashboard logs every request and shows this-conversation and all-time totals, a per-model breakdown, and how much caching actually saved.
Policy
The policy engine gates every tool call before it runs. You can disable whole tools — run_command, install_tool, git — or block command patterns.
Destructive commands are blocked out of the box: rm -rf /, mkfs, format c: and friends. A denied call is refused and the agent is told why, so it adapts instead of retrying blindly.
Pattern matching skips quoted here-document bodies, because their contents are data. Writing a file that mentions a blocked command is not running one — a distinction that matters the first time you ask it to document your own safety rules.
Team policy
A [policy] section in akili-code.toml is committed to the repository and merged with each person's own. The merge can only tighten, never loosen — so a teammate cannot widen what the repository allows by editing their own settings.
Permission prompts
Turn on Ask permission and the agent stops for consent before running commands, installing tools, or touching git. Sending email always asks, whatever else is configured.
Checkpoints
A git checkpoint is committed before every run, so a whole run is undoable as a unit. The Diff tab lists recent checkpoints with a Restore button and shows red/green counts per file.
Secrets
Changed files are scanned for things that look like leaked credentials — provider keys, cloud keys, private key blocks — and flagged before they land. Your own provider keys live in your per-user config directory and are never written into a project.
Audit
Every tool call and its outcome is appended, timestamped, to .akili-code/audit.log in the project. It answers "what did it actually do?" after the fact, including every refusal and the rule that caused it.