Something went wrong. Try again.
Identities for entities did.bot
agent llm did
Something went wrong. Try again.
id: write-policy title: Which agents may write which record types status: open crates: [didbot-pds, didbot-serve] dependsOn: [pds-writes] exitCriterion: > An agent whose profile does not permit a collection is refused when it writes one, and the refusal names the policy. #
write-policy #
Superseded. policy settles the model this epic assumed — denials only, evaluated at the write, from three sources — and where the two disagree, this file is wrong. Read that one first.
The server refuses collections it does not define and records that fail their lexicon. Neither is policy: both give the same answer for every agent. Missing is the per-agent question — this one may record and not remember.
The natural key is the agent's type, which is what distinct subagent DIDs are for.
-
**The factual half of this changed and this item used to say otherwise.** There *is* authentication on a repo write now: `createRecord`, `putRecord`, `deleteRecord` and `applyWrites` all go through `auth::require_agent_token_or_dpop`, which resolves an agent token or a DPoP-bound OAuth access token to a DID, and `routes::write_record` refuses with `repo_mismatch` when the resolved DID is not the repository named. So today's answer is "the account itself, holding a credential this server issued" — not "anyone who can reach the server". What is still undecided is the policy on top of that: whether an agent *should* be able to set its own picture and its own profile fields at all. Whether an agent may set its own picture, and through what, is a policy question rather than a drawing question: an avatar arriving from outside is a claim about an identity, and the rule that a profile is identity and never comes from the model is written in `didbot-pds`'s profile module. Settle it here before any tool offers it.