How pacts work
The pact flow has three phases: propose, approve, operate.What a pact contains
For the conceptual overview of the four elements, see What is a pact. The following table maps those elements to PactSpec fields:| Field | What it controls |
|---|---|
| Intent | A plain-language description of what the runtime wants to do — e.g., “DCA $500/week into ETH on Base for 3 months” |
| Execution plan | A detailed markdown plan explaining the runtime’s strategy, steps, and rationale — helps the owner understand how the program intends to accomplish the intent |
| Policies | Spending rules — per-transaction limits, daily/weekly budgets, allowed chains/tokens/contracts |
| Completion conditions | Conditions that end the pact automatically — e.g., after 12 transactions, $6,000 total spent, or 90 days elapsed |
Example PactSpec
A DCA trader pact that allows weekly $500 ETH purchases on Base for 3 months:Pact lifecycle
A pact moves through these states:| State | What it means |
|---|---|
PENDING_APPROVAL | Runtime submitted the pact. Waiting for owner approval in the Cobo Agentic Wallet app. |
ACTIVE | Owner approved. The runtime now has a scoped delegation and API key to operate within the pact’s boundaries. |
REJECTED | Owner rejected the pact. No access was granted. |
COMPLETED | A completion condition was met (e.g., 12 transactions completed). Access revoked automatically. |
EXPIRED | The pact expired because approval timed out or a time-based completion condition elapsed. Access revoked automatically. |
REVOKED | Owner revoked the pact manually. Access revoked immediately. |
COMPLETED, EXPIRED, REVOKED), the delegation and its pact-scoped API key are both revoked. The runtime can no longer submit onchain operations.
Pact, delegation, and policy relationship
When you approve a pact, Cobo Agentic Wallet creates the underlying infrastructure automatically:Submit a pact
- CLI
- Python SDK
- TypeScript SDK
--intent, --execution-plan, --policies, and --completion-conditions. The wallet UUID is resolved from the active wallet profile. Poll for status after submission:Check pact status
- CLI
- Python SDK
- TypeScript SDK
Revoke a pact
- CLI
- Python SDK
- TypeScript SDK
Approval experience
When your runtime submits a pact, the owner receives a notification in the Cobo Agentic Wallet app. The approval screen shows:- Intent — what the agent wants to do, in plain language
- Execution plan — the agent’s detailed strategy and steps, so you understand the reasoning
- Policy scope proposed — what transactions and contract calls the pact would allow in practice
- Spending rules — per-transaction limits, daily budgets, allowed chains and contracts
- Duration — how long the pact lasts
- Completion conditions — what triggers automatic completion
When to use pacts vs. manual delegation
| Scenario | Use |
|---|---|
| Agent needs temporary, scoped access for a specific task | Pact — auto-expires, auto-revokes on completion |
| You want to review what the agent is asking for before granting access | Pact — the approval flow shows you exactly what’s being requested |
| Permanent or long-lived delegation managed by an admin | Manual delegation — create directly via API or CLI |
| Programmatic setup without human approval | Manual delegation — no approval step required |
Pact events
Every pact records lifecycle events that you can query:- CLI
- Python SDK
- TypeScript SDK
submitted, activated, rejected, completed, expired, revoked. Each event records a timestamp and relevant details.
Policy Engine
Deep dive into policy rules — the spending limits enforced by pacts.
Create Delegation
Understand delegations — the access grants created when pacts are approved.