sgit newsroom v0.1.29 · snapshot 2026-09-24

Reading room · riskmandate.ai

On this page

Reading room / riskmandate.ai · raw text · live ↗

From riskmandate.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.

GRANT — everything the agent can do

Measured from the deployment shape, not from your account and not by you. Every row says how it is known, what stands in the way, and whether it can be undone. Irreversible rows first.

Vault claude-code-web · status template · shape anthropic/claude-code-remote/ccr-container · grant 2026-09-05.2 · mandate 2026-09-09 · vocabulary abp.sgit.ai v0.3.0 · as at 2026-09-15


Shape Claude Code on the web (a remote session container) (Anthropic) · surface agentbox · grant version 2026-09-05.2 · rows 15, of which 13 measured and 2 derived · widest reach tenant

What the words mean here

A managed cloud container, ephemeral, one git repository attached, an egress proxy above it, and a set of harness tools scoped by the platform. MEASURED, by the thing being profiled: the shell probed on 5 September with probes/run.py, the fetch tool's reach and the harness tools reported by the operator. HOST MEANS THE CONTAINER, not your machine; TENANT means the platform's scoped tokens, not your accounts. The same environment measured on 26 August is the Grant & Mandate library's first entry, and the two agree on every row they share.

ReachIn this shape means
hostthis container — ephemeral, the vendor's; not your machine
tenantthe attached repository and the platform's scoped tokens; not your accounts
worldthe hosts the proxy allows

The rows

CapabilityWhat it isBarrierUndoEvidenceViaWhat stands in the way
authenticate-as.credential.signingSign commits with the key it holds● nonenoobserved ✓shell (Bash)—
delete.file.hostDelete files anywhere the account can reach● nonenoobserved ✓shell (Bash)—
read.credential.hostRead credentials stored where it runs● nonenoobserved ✓shell (Bash)—
read.file.hostRead any file the account can reach● nonenoobserved ✓shell (Bash)—
read.record.historyRead a retained record: shell history, past sessions● nonenoobserved ✓shell (Bash)—
authenticate-as.credential.tenantAct in accounts with the credentials it holds○ boundarynoinferredshell (Bash), harness (MCP and built-in tools)the token's scope, set by the platform (in-scope repositories only)
send.endpoint.allowedReach a permitted list of hosts○ boundarynoobserved ✓shell (Bash), fetch (WebFetch), harness (MCP and built-in tools)a mandatory egress proxy configured above this process — hosts it refuses are refused with a 403 on the CONNECT; the six hosts probed on 5 September all answered
execute.process.hostRun programs as the account● nonewith-effortobserved ✓shell (Bash)—
write.file.hostChange any file the account can reach● nonewith-effortobserved ✓shell (Bash)—
write.file.projectChange the project it is working on● nonewith-effortobserved ✓shell (Bash)—
write.repository.projectCommit to the repository it was pointed at● nonewith-effortobserved ✓shell (Bash)—
write.repository.tenantPush to a code host (any branch it can reach)◐ settingwith-effortobserved ✓shell (Bash), harness (MCP and built-in tools)pre-commit and pre-push hooks in the clone (the mandate hook and the insurance policy) — refuse by exit code, --no-verify passes; no branch rule at the host
read.file.projectRead the project it is working on● noneyesobserved ✓shell (Bash), harness (MCP and built-in tools)—
create.schedule.tenantCreate something that outlives the session, on the platform (a routine, a scheduled trigger, a new session)◐ settingyesself-reportedharness (MCP and built-in tools)the platform's routines are the operator's to list and delete
create.schedule.hostCreate something that outlives the turn where it runs (a cron, a service)○ boundaryyesobserved ✓shell (Bash)the container is ephemeral: whatever is scheduled here dies with it

The notes behind the rows

Permitted, and blocked

The grant above is what the agent can do after the blocks. This is what something withholds. A block is not a property of the credential: some of these are the credential's own ceiling, and some are a vendor choosing not to ship a tool the credential would authorise. Each one names what blocks it, because those two are not the same object and a reader who is shown them under one heading has been told something this document cannot support.

WhatBlocked byWho holds the blockWhySource
your machine's filesthe container this runs in — no path from it to the operator's computernot yet recordedthe container has no path to the operator's computer; the assess tree records home as a boundaryassess/library.json (agentbox: home)
your credentialsthe image — no user credential is in it; the keys present are the session's ownnot yet recordedno user credential is in the image; the keys present are the session's ownevidence: filesystem.credential-presence, 5 Sep
hosts the proxy refusesthe egress proxy, set above the process: a 403 on the CONNECTnot yet recordeda 403 on the CONNECT, set above the processevidence: network.egress-shell
repositories outside the platform's scopethe platform, which scopes the token and refuses an out-of-scope call from its own API toolnot yet recordedthe token is scoped by the platform; the API tool refuses out-of-scope callsharness.platform-tools, self-reported

The four barriers, and the test

BarrierWhat stands in the wayIs it a control
●nonenothing in the wayno
◉expectationa rule in prose, enforced by nobodyno
◐settinga switch the agent's own account can flipno
○boundaryenforced above the grant, out of the agent's reachyes

A control bounds a grant only if it is enforced by something the grant does not include.

A setting the agent's own account can change is not a control, because the grant includes the ability to remove the bound. A boundary enforced above it is one, because it does not.

Evidence tiers

TierMeans
derivedfrom what the thing architecturally is; a claim until somebody runs the probes
inferredfrom another row or another profile, by reasoning rather than by observation
self-reportedreported by the operator, the harness or the tool itself, without an independent probe
documentedthe vendor, or a published tool, says so
measured ✓a probe run on an instance, dated, with an evidence file
observed ✓seen directly, on the thing itself, by the thing itself

✓ marks the tiers this vault counts as measured. Nothing here was obtained by probing anybody else's system: a row is measured only from a system we are entitled to run, or from the vendor's own published documentation.

Ask the agent to check it

The agent is running in the deployment this file describes, so it can look. What it reports is a claim until a log held outside it agrees — but a claim from inside the deployment is a better starting point than a template. Paste this into a session running in the shape above:

You are running inside the deployment described in GRANT.md. Compare each row with what you
can actually reach from here, and report — do not change any file except the one named below.

For every row: PRESENT, ABSENT or CANNOT TELL; which tool reaches it; one line of evidence
(a command's output, a tool's own description, a documentation sentence with its URL).
Never exercise a capability whose undo class is "no" to prove it exists: presence of a
credential file is evidence; using it is not permitted.
Add a row for anything you can reach that is not listed, in verb.object.reach form, using
only the 23 primitives in data/vocabulary/capabilities.json. A new path, host or mailbox is
an instance of an existing primitive, not a new one.
Do not touch MANDATE.md or data/mandate.json — that file is the deployer's, not yours.
Write the result to history/grant-check--<today>.md with the date and the tool versions
you can see. Everything in it is self-report; say so at the top.

This describes the deployment shape as at this date. If the risk changed, the deployment changed — not this document. No score, rating, level or traffic light appears in this vault or in its data, and none will. The behaviour policy describes; it does not judge. Generated by scripts/site/build-abp-vault.mjs from data/grant.json, data/mandate.json and the pinned vocabulary; data/mandate.json is the only file a person writes. Licence: the published template is CC BY 4.0; a paid copy carries a commercial licence to the buyer. See LICENCE.md.