How to do it
- Create the agent Open Agents and add one per tool or job, for example a changelog agent and a newsletter agent.
- Mint a key Mint a key for that agent. Copy it immediately; it is shown once and stored only as a SHA-256 hash.
- Choose networks Tick only the networks this agent should draft for. A draft aimed elsewhere is refused.
- Choose permissions Draft is the default. Add schedule only if the agent should pick times, and analytics only if it should read metrics.
- Revoke when done Revoke a key the moment a tool is retired or the key may have leaked. Other agents keep working.
Permission bits
| Permission | Lets the agent |
|---|---|
| Draft | Create pending posts that wait in the inbox |
| Schedule | Propose a date, time, and timezone for a post |
| Analytics | Read per-post metrics and insights |
Networks are a separate set of bits. A key with draft on Bluesky only cannot draft for X.
The rule that cannot be switched off
An agent key can never approve a post it drafted, even if its permissions include approve. The API answers 403. Approval comes from a person in the inbox, or from the owner key.
Owner key versus agent keys
The owner key signs in to the web app and can approve, reject, apply policy, and change brand memory. Keep it in a password manager and never put it in an agent's config. Agent keys cannot sign in to the web app.
Daily limits apply to agents
Per-account daily limits are enforced whenever no person is in the loop. A direct agent schedule that would exceed the limit fails with a 422. An owner approving by hand may go over it.
Least privilege
Start every agent at draft only. Promote it through the trust ladder when it has earned it. The least privilege glossary entry explains the principle.