subagentpermissions

.com permission policy catalog
4 invocation controls, live from D1

Invocation controls

Who or what may invoke anything at all -- distinct from permission policies' question of what a tool may do once invoked. Grounded in claude-tag's restrict-access.md; see the grounding.

members equivalent reversible

Per-site WRITE_SECRET bearer gate

applies to

Every POST/PATCH route on every D1-backed primitive in the subagent*.com family (identities, contracts, tasks, citations, rubrics, outcomes, evaluations, brands, code, prompts, skills, roles, memories, and more)

mechanism

requireBearerAuth(request, env.<SITE>_WRITE_SECRET) in workers/_shared/kit/http.ts — returns 503 if no secret is configured, 401 if the bearer token doesn't match, null (proceed) otherwise

notes

The direct functional analogue of restrict-access.md's Members setting: it doesn't control who can *read* a site (every GET route is open, matching claude-tag's "anyone in the channel" default) but it does control who can *act* — the same "who can invoke Claude at all" question, applied to "who can write to this primitive."

grounded in

admins/restrict-access.md, "Control who can invoke Claude Tag" / "Members"

credential revocation equivalent destructive

Write-only secret storage (Cloudflare Worker secrets)

applies to

Every *_WRITE_SECRET value across the family, once set via wrangler secret put

mechanism

Cloudflare Worker secrets have no read-back API — a secret can be overwritten or deleted, never displayed again after it's set

notes

This is the same write-only property security-and-data.md documents for claude-tag's own credential store ("A saved credential is not displayed again. The setup screens are write-only.") — already cited on subagentidentities.com's security-and-data-handling page. It is not reversible in the sense of "recover the old value," matching restrict-access.md's own note that deleting a bundle "revokes its credentials everywhere it was attached."

grounded in

admins/restrict-access.md, "Quiet or remove Claude Tag", step 5 ("Delete the bundle"); concepts/security-and-data.md, "Credential storage"

scope detach equivalent reversible

Removing a [[routes]] binding from wrangler.toml

applies to

Any single subagent*.com Worker

mechanism

Deleting or commenting out the [[routes]] block in that worker's wrangler.toml and redeploying — the domain falls back to serving nothing (or a parked-domain response) at that route

notes

The closest repo equivalent to restrict-access.md's step 4, "Detach the scope. The channel loses its elevated access and falls back to inherited baselines" — a worker losing its route stops answering requests but its D1 data, code, and git history are all untouched, the same way detaching a scope doesn't delete a bundle's credentials.

grounded in

admins/restrict-access.md, "Quiet or remove Claude Tag", step 4 ("Detach the scope")

not available equivalent reversible

No per-operator spend or rate cap exists in this repo

applies to

N/A — documented gap, not a control

mechanism

N/A

notes

restrict-access.md is explicit that claude-tag itself has no "per-user spend caps on channel work" either ("Spend limits apply at the organization and channel level. There's no way to cap what one member can spend in channels"). This repo has the same real gap: nothing meters or caps how much any individual operator session spends against a shared Cloudflare account or D1 database. Seeded here as an honest "controls that aren't available" entry, mirroring that section of the same doc, rather than silently omitted.

grounded in

admins/restrict-access.md, "Controls that aren't available", "Per-user spend caps on channel work"