Play / The map / The products / Claude Code — local · confirm on

Claude Code (the CLI, on your own machine)

The common case: one CLI agent running as your user account, credentials in the home directory, confirmations on, no containment. DERIVED from what a command-line program running as your account architecturally is, not measured on any instance — every row is a claim until somebody runs the probes and contributes the file. The assess library's cli tree is the source.

Anthropic · surface cli · variant local-default · profile version 2026-09-05 · reaches 16 of 23 capabilities, 8 of which cannot be undone. Edit this profile · the file.

CapabilityUndo Claude Codelocal · confirm on
filesystem — files and directories
Read the project it is working onread.file.projectyes
Change the project it is working onwrite.file.projectwith-effort
Read any file the account can reachread.file.hostno
Change any file the account can reachwrite.file.hostwith-effort
Delete files anywhere the account can reachdelete.file.hostno
Read a retained record: shell history, past sessionsread.record.historyno
process — programs and their execution
Run programs as the accountexecute.process.hostwith-effort
Run programs inside its own sandbox onlyexecute.process.selfyes ·
network — endpoints and hosts
Reach a permitted list of hostssend.endpoint.allowedno ·
Reach any host on the internetsend.endpoint.worldno
identity — credentials and who the agent can act as
Read credentials stored where it runsread.credential.hostno
Act in accounts with the credentials it holdsauthenticate-as.credential.tenantno
Change its own permission settingsgrant.credential.selfyes
communication — messages to people
Send a message to anyonesend.message.worldno ·
Read mail or chat it is connected toread.message.tenantno ·
code — repositories and what lands in them
Commit to the repository it was pointed atwrite.repository.projectwith-effort
Push to a code host (any branch it can reach)write.repository.tenantwith-effort
Sign commits with the key it holdsauthenticate-as.credential.signingno
Publish packages, images or pages under the name it holdscreate.record.worldno
money — budgets and spend
Spend money or tokens against an account it holdswrite.budget.tenantno ·
schedule — things that outlive the turn
Create something that outlives the turn where it runs (a cron, a service)create.schedule.hostyes
Create something that outlives the session, on the platform (a routine, a scheduled trigger, a new session)create.schedule.tenantyes ·
browser — what a browser extension or automation can see and do in your browser
Read every page you visitread.record.browsingno ·

What host, tenant and world mean here

ReachHere, it means
hostyour machine, as your user account
tenantyour accounts, with the credentials in your home directory
worldthe internet

The grant, tool by tool

Two tools in one session reach different things, which is why the unit of mapping is the tool and not the product. Each row carries the control on the path and the tier of evidence behind it.

shell (Bash)

CapabilityControlEvidenceWhat is on the path
Run programs as the account execute.process.host◐ settingderivedthe tool's own directory restriction and its confirmation prompt — enforced by the tool, which runs inside the grant; anything that can execute as you steps around it
Read any file the account can reach read.file.host● nonederived— · everything your account can read, because a shell as you reads as you
Change any file the account can reach write.file.host● nonederived
Delete files anywhere the account can reach delete.file.host● nonederived
Reach any host on the internet send.endpoint.world● nonederived— · curl reaches the world unless something above the account stops it
Read credentials stored where it runs read.credential.host● nonedocumented— · a published read-only audit tool enumerates exactly this class in a home directory
Act in accounts with the credentials it holds authenticate-as.credential.tenant● nonederived— · inferred from the credentials the account holds
Push to a code host (any branch it can reach) write.repository.tenant◉ expectationderivedbranch discipline in prose, if any
Sign commits with the key it holds authenticate-as.credential.signing● nonedocumented— · if commit signing is configured for the account, the agent signs as you
Publish packages, images or pages under the name it holds create.record.world● nonedocumented— · if a registry token is in the home directory
Read a retained record: shell history, past sessions read.record.history● nonedocumented— · shell history and the harness's own transcripts
Change its own permission settings grant.credential.self◐ settingderivedthe settings file is owned by the same account · anything running as you can rewrite the file that turns the prompt off
Create something that outlives the turn where it runs (a cron, a service) create.schedule.host● nonederived— · a shell as you can write a crontab
Read the project it is working on read.file.project● nonederived
Change the project it is working on write.file.project● nonederived
Commit to the repository it was pointed at write.repository.project● nonederived

files (Read, Edit, Write)

CapabilityControlEvidenceWhat is on the path
Read the project it is working on read.file.project● nonederived
Change the project it is working on write.file.project● nonederived
Read any file the account can reach read.file.host◐ settingderivedthe tool's own directory restriction and its confirmation prompt — enforced by the tool, which runs inside the grant; anything that can execute as you steps around it · outside the working tree only with the prompt, which the shell does not need
Change any file the account can reach write.file.host◐ settingderivedthe tool's own directory restriction and its confirmation prompt — enforced by the tool, which runs inside the grant; anything that can execute as you steps around it
Delete files anywhere the account can reach delete.file.host◐ settingderivedthe tool's own directory restriction and its confirmation prompt — enforced by the tool, which runs inside the grant; anything that can execute as you steps around it

fetch (WebFetch)

CapabilityControlEvidenceWhat is on the path
Reach any host on the internet send.endpoint.world◐ settingderivedthe tool's own domain confirmation

What narrows it

For each capability in the grant: the specific setting or arrangement that narrows it, what it costs, and the tier the control reaches afterwards. Guidance is free and stays free.

CapabilityThe settingWhat it costsTier after
Sign commits with the key it holdsa signing key of the agent's own, so its commits are signed as it and not as you (the registry's identity records exist for this)an hour, and a second key to manageboundary
Act in accounts with the credentials it holdsscoped, short-lived tokens issued to the agent rather than your own; read-only where read is all it needsan hour per service, and rotationboundary
Publish packages, images or pages under the name it holdsno publishing token in the agent's environment; publish from CI with a token the agent does not holdan afternoon to move the publish stepboundary
Create something that outlives the turn where it runs (a cron, a service)no scheduler in the agent's environment; anything that outlives the turn goes through a personyou create the routineboundary
Delete files anywhere the account can reachthe same container or account; and a backup that the agent cannot reach, because delete at host reach is irreversibleas above, plus a backup outside the grantboundary
Run programs as the accountkeep the confirmation prompt on for commands, and run in a container: execution survives inside it and stops being execution on your machinea click per command · an afternoon for the containersetting (prompt) · boundary (container)
Change its own permission settingssettings owned by a different user than the one the agent runs as, or set above the session by the platformminutes, if the platform supports it; otherwise the separate accountboundary
Read credentials stored where it runskeep credentials out of the account the agent runs as: a credential helper, a separate account, or a container without your home mountedan afternoon, and re-authenticating where the agent needs a credential of its ownboundary
Read any file the account can reachrun the agent in a container with only the project mounted, or under a separate user accountan afternoon, then ongoing friction (container) · days, and it fights you (account)boundary
Read the project it is working onnone: this is what it is fornothingnone
Read a retained record: shell history, past sessionshistory off, or a fresh environment per task, so the grant is a tree over the present rather than a union over every prior turnthe agent forgets between tasksboundary
Reach any host on the internetroute outbound traffic through an allow-list — the one control the hosted container already has, demonstrated rather than claimedan hour, if you already have somewhere to put itboundary
Change any file the account can reachthe same container or account; the tool's own directory restriction is a setting anything running as you can step aroundas aboveboundary
Change the project it is working ona review before mergea reviewer's timesetting
Commit to the repository it was pointed atnone needed for most work; a review before merge is the controla reviewer's timesetting
Push to a code host (any branch it can reach)a branch protection rule at the host — the agent cannot edit it — and a pre-push hook in the clone for the earlier, cheaper refusalminutes; and a review step before anything deploysboundary (host rule) · setting (hook)

Against the mandates

What a reasonable person wanted from this setup, and the gap: ▲ excess is what it can do that they did not want; ▼ shortfall is what they wanted that it cannot do.

MandateExcessShortfall
A coding assistant on my machine▲ 10▼ 1

Sources

A derived row is an inference from what this kind of program architecturally is. It is a claim, and the most useful pull request on this page is one that replaces a claim with a probe run — how.