The two sets
A key can anchor, or anchor and verify. The console shows those two words; the scope names travel on the API and appear inside a refusal. They are listed here to be recognized, not to be picked from.
A key you create carries one of those two sets and nothing else. Scopes are
not selected individually.
POST /api/v1/user/keys refuses any other
combination, with its own message: “A key can anchor, or anchor and verify.
Send scopes with exactly the three anchor scopes, or those three and the two
verify scopes.”
What each scope allows:
Why the three anchor scopes travel together
Each one is useless without the others, which is why they are one choice rather than three.agent:enrollruns first. Both SDKs enroll the signing key before the first anchor, in the runtime, which is where the signing key is. A key that could write but not enroll would anchor nothing, because the plane refuses an envelope signed by a key it has no agent for.anchor:readruns last. Building a hand-over pack reads your own records back, andbundlereports each pack it writes with the same key. Anchoring never touches the read routes, so a key that could write but not read would work for weeks and fail the first time you hand anything over.
What the signing key does, and what it never leaves
The API key and the signing key are different things and the split is the security model.
Sanning cannot produce a record that verifies as yours, because it has never held the key
that signs one.