Files
AOS/agency-agents/policies/autonomy.md
T
Z User 136379c666 feat: zeroclaw agentic agency architecture — agents, skills, Rust crates
- 18 agent specs across Software, Support, Marketing, Cross-cutting
  (orchestrator + 7 software + 5 support + 3 cross-cutting + leads-finder)
- 8 reusable skills (handoff, pr-review, dokploy-deploy, campaign-structure,
  content-calendar, ticket-triage, license-lifecycle, invoice-draft)
- 3 JSON schemas: handoff, deliverable, approval
- Policies: autonomy levels, tool risk classification, compliance (DSGVO/GoBD/UWG)
- routing.toml: model tiers T1/T2/T3 + provider config (PII gating)
- Rust workspace (5 crates, all compile + 16 tests pass):
  - aos-mcp: tool registry + risk tagging
  - aos-policy: autonomy levels, budget enforcement, approval requests
  - aos-license: ed25519 license issue/verify (real crypto + CLI binary)
  - aos-ledger: integer-cents money math, gapless numbering, VAT, audit chain
  - aos-sync: frontmatter validator (18/18 specs pass), CLI binary
- CLAUDE.md entry point with architecture overview + roadmap
2026-10-30 13:01:03 +00:00

49 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Autonomy Levels & Approval Gates
Every agent spec declares an `autonomy` level (L0–L2). L3 (full autonomy)
is **not used** initially — the cost of an autonomous mistake is higher than
the cost of a human click.
## Levels
| Level | Meaning | Examples |
|-------|---------|----------|
| **L0** | Read/analyze only. Produces a report/draft, changes no state. | Audits, research, reports, estimates |
| **L1** | Drafts inside the system; a human approves before anything leaves. | Client emails, social posts, invoices, ad campaigns, outreach |
| **L2** | Acts alone within caps and reversible scope. Internal-only side effects. | Ticket triage, internal task creation, low-risk support replies, internal notes |
## Hard rules — always human-approved regardless of level
These are enforced by the `aos-policy` Rust crate (not the prompt). An agent
attempting one pauses the task and emits an `ApprovalRequest`
(see `schemas/approval.json`).
- **Spending money** (ads, API fees, paid tools)
- **Publishing publicly** (website go-live, social post, blog article)
- **Sending invoices**
- **First client/prospect contact** (email, message, call)
- **Sending outreach** (cold B2B — UWG §7, draft-only by default)
- **Revoking licenses**
- **Deleting data / instances / DNS records**
- **Production deploys**
- **DB migrations on live data**
- **Anything filed with authorities** (UStVA, EÜR, ELSTER)
- **Contract changes** (new, amended, terminated)
- **Budget changes** (raising a campaign cap, approving extra spend)
## How approvals surface
- An `ApprovalRequest` lands in the AOS approval inbox.
- A notification goes to the human approver (phone/Slack/email — channel TBD,
see open questions).
- The approver sees: action, risk, rationale, diff summary, estimated cost,
the originating task + agent, and the full structured payload.
- Approving resumes the task; rejecting fails it with a reason logged.
## Budget enforcement
Each agent spec declares `budget.max_eur_per_task` and `budget.max_tokens`.
The policy crate tracks cumulative spend per task_id and hard-stops when the
cap is reached — no agent can spend past its declared ceiling, even with
approval, without an explicit budget-increase approval.