Play / The map / The products / Scheduled job — service account

A scheduled job running as a service account

A cron job or scheduled task on a server, under an account that is not a person's, with a credential nobody rotates. It runs when nobody is watching and no person's judgement stands in front of it. DERIVED; not measured on any instance.

generic · surface service · variant service-account · profile version 2026-09-05 · reaches 7 of 23 capabilities, 4 of which cannot be undone. Edit this profile · the file.

CapabilityUndo Scheduled jobservice account
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
hostthe server it runs on, as the service account
tenantwhatever the service account's credential opens
worldthe internet, from the server

What it cannot reach, and why

WhatWhySource
your machineit runs on a serverby construction

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.

the job

CapabilityControlEvidenceWhat is on the path
Run programs as the account execute.process.host● nonederived— · as the service account, on a schedule
Read any file the account can reach read.file.host● nonederived
Change any file the account can reach write.file.host● nonederived
Act in accounts with the credentials it holds authenticate-as.credential.tenant● nonederived— · a service-account credential, rarely rotated
Reach any host on the internet send.endpoint.world● nonederived
Create something that outlives the turn where it runs (a cron, a service) create.schedule.host● nonederived— · it is one
Spend money or tokens against an account it holds write.budget.tenant● nonederived— · if the credential is billed

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
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
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
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)
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
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
Spend money or tokens against an account it holdsa spend cap at the supplier, set by somebody other than the agent — the supplier has a reason to refuse: it is payingthe work stops when the cap is reached, which is the pointboundary
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

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 scheduled job under a service account▲ 2▼ 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.