From abp.sgit.ai, the page as fetched on 2026-09-25 · open the live page ↗Everything on this sheet is the source site's own text; the newsroom's chrome is outside it.
{
"type": "capability-primitives/v1",
"_what_this_is": "The starting set of CAPABILITY primitives: a verb crossed with an object class crossed with a reach, held at a stated altitude, each carrying whether its effect is reversible. A specific path, host or mailbox is an INSTANCE of a primitive, never a new one; only a new verb, object class or reach is a primitive, and it needs a probe. These are capabilities. The estate's other primitives — the counters a policy is written in — are METERS (measurable primitives); never say just 'primitives' in a document that touches both.",
"source": "brief v0.33.64, 'the grant/mandate repo ships probes, not tables' (4 Sep 2026), §The Primitive",
"verbs": [
"read",
"write",
"create",
"delete",
"execute",
"send",
"receive",
"authenticate-as",
"grant",
"revoke"
],
"object_classes": [
"file",
"process",
"network-endpoint",
"credential",
"message",
"record",
"repository",
"budget",
"schedule"
],
"reaches": {
"self": "the agent's own process, sandbox or turn",
"project": "the working tree or workspace it was pointed at",
"host": "the machine, container or account it runs as",
"tenant": "the organisation's accounts, repositories and services",
"world": "anything on the internet"
},
"reversible": {
"yes": "undone by the same actor with no loss",
"with-effort": "recoverable from a backup, a history or a revert, at a cost",
"no": "cannot be undone: a record read is exposure that cannot be unread; a message sent is sent"
},
"families": {
"filesystem": "files and directories",
"process": "programs and their execution",
"network": "endpoints and hosts",
"identity": "credentials and who the agent can act as",
"communication": "messages to people",
"code": "repositories and what lands in them",
"money": "budgets and spend",
"schedule": "things that outlive the turn",
"browser": "what a browser extension or automation can see and do in your browser"
},
"capabilities": [
{
"id": "read.file.project",
"family": "filesystem",
"verb": "read",
"object": "file",
"reach": "project",
"reversible": "yes",
"label": "Read the project it is working on"
},
{
"id": "write.file.project",
"family": "filesystem",
"verb": "write",
"object": "file",
"reach": "project",
"reversible": "with-effort",
"label": "Change the project it is working on"
},
{
"id": "read.file.host",
"family": "filesystem",
"verb": "read",
"object": "file",
"reach": "host",
"reversible": "no",
"label": "Read any file the account can reach",
"why_irreversible": "a record once read is exposure that cannot be unread"
},
{
"id": "write.file.host",
"family": "filesystem",
"verb": "write",
"object": "file",
"reach": "host",
"reversible": "with-effort",
"label": "Change any file the account can reach"
},
{
"id": "delete.file.host",
"family": "filesystem",
"verb": "delete",
"object": "file",
"reach": "host",
"reversible": "no",
"label": "Delete files anywhere the account can reach"
},
{
"id": "execute.process.host",
"family": "process",
"verb": "execute",
"object": "process",
"reach": "host",
"reversible": "with-effort",
"label": "Run programs as the account",
"note": "reversibility is that of whatever the program does; the primitive is held at with-effort because installs and edits are recoverable and the worst cases are their own rows"
},
{
"id": "execute.process.self",
"family": "process",
"verb": "execute",
"object": "process",
"reach": "self",
"reversible": "yes",
"label": "Run programs inside its own sandbox only"
},
{
"id": "send.endpoint.allowed",
"family": "network",
"verb": "send",
"object": "network-endpoint",
"reach": "tenant",
"reversible": "no",
"label": "Reach a permitted list of hosts",
"why_irreversible": "bytes sent are sent"
},
{
"id": "send.endpoint.world",
"family": "network",
"verb": "send",
"object": "network-endpoint",
"reach": "world",
"reversible": "no",
"label": "Reach any host on the internet"
},
{
"id": "read.credential.host",
"family": "identity",
"verb": "read",
"object": "credential",
"reach": "host",
"reversible": "no",
"label": "Read credentials stored where it runs",
"why_irreversible": "a credential read is a credential exposed"
},
{
"id": "authenticate-as.credential.tenant",
"family": "identity",
"verb": "authenticate-as",
"object": "credential",
"reach": "tenant",
"reversible": "no",
"label": "Act in accounts with the credentials it holds"
},
{
"id": "grant.credential.self",
"family": "identity",
"verb": "grant",
"object": "credential",
"reach": "self",
"reversible": "yes",
"label": "Change its own permission settings"
},
{
"id": "send.message.world",
"family": "communication",
"verb": "send",
"object": "message",
"reach": "world",
"reversible": "no",
"label": "Send a message to anyone"
},
{
"id": "read.message.tenant",
"family": "communication",
"verb": "read",
"object": "message",
"reach": "tenant",
"reversible": "no",
"label": "Read mail or chat it is connected to"
},
{
"id": "write.repository.project",
"family": "code",
"verb": "write",
"object": "repository",
"reach": "project",
"reversible": "with-effort",
"label": "Commit to the repository it was pointed at"
},
{
"id": "write.repository.tenant",
"family": "code",
"verb": "write",
"object": "repository",
"reach": "tenant",
"reversible": "with-effort",
"label": "Push to a code host (any branch it can reach)",
"note": "a push to a branch that deploys is with-effort for the repository and no for whatever the deploy did"
},
{
"id": "authenticate-as.credential.signing",
"family": "code",
"verb": "authenticate-as",
"object": "credential",
"reach": "tenant",
"reversible": "no",
"label": "Sign commits with the key it holds"
},
{
"id": "create.record.world",
"family": "code",
"verb": "create",
"object": "record",
"reach": "world",
"reversible": "no",
"label": "Publish packages, images or pages under the name it holds"
},
{
"id": "write.budget.tenant",
"family": "money",
"verb": "write",
"object": "budget",
"reach": "tenant",
"reversible": "no",
"label": "Spend money or tokens against an account it holds"
},
{
"id": "create.schedule.host",
"family": "schedule",
"verb": "create",
"object": "schedule",
"reach": "host",
"reversible": "yes",
"label": "Create something that outlives the turn where it runs (a cron, a service)"
},
{
"id": "read.record.history",
"family": "filesystem",
"verb": "read",
"object": "record",
"reach": "host",
"reversible": "no",
"label": "Read a retained record: shell history, past sessions",
"why_irreversible": "a transcript read is every earlier session's reach, exposed again"
},
{
"id": "create.schedule.tenant",
"family": "schedule",
"verb": "create",
"object": "schedule",
"reach": "tenant",
"reversible": "yes",
"label": "Create something that outlives the session, on the platform (a routine, a scheduled trigger, a new session)",
"note": "reversible in itself; what the scheduled thing does carries its own rows"
},
{
"id": "read.record.browsing",
"family": "browser",
"verb": "read",
"object": "record",
"reach": "host",
"reversible": "no",
"label": "Read every page you visit",
"why_irreversible": "what you read, it read"
}
],
"rules": [
"A specific path, host or mailbox is an instance of a primitive, never a new one.",
"Reversibility sits on the primitive, not the instance, because it decides whether a gap is a nuisance or a loss — and this estate has settled that recoverability decides insurability.",
"A grant containing irreversible primitives is a different object from one that does not, however many rows each has.",
"The set is a starting set and will be wrong at the edges from the first week. A proposed primitive that is a specific thing is an instance; one that is a new verb, object class or reach needs a probe.",
"A label never says 'your' or 'as you': what host, tenant and world mean is the profile's to say (reach_names), because for an agent in a vendor's container 'host' is the container and 'tenant' is a scoped token, not your machine and not your accounts."
],
"licence": "CC BY 4.0"
}