01What it fits02 shapes worked · 05 broke
Two job shapes worked as written.
A run reaches only what it was given at creation, and only what it pushes survives. The two shapes below respected both, number for number.
worked · a bounded edit
A bounded edit on one repository, ending in a PR.
One hand-started session moved the history out of two long runbooks into sibling files and opened two PRs. Every line it cut appeared word for word in the history file (96 of 96, 32 of 32), no review round was needed, and it cost $4.
worked · a scheduled fetch
A scheduled fetch-and-commit on fixed repositories and hosts.
A daily metrics routine opened its PR 47–57 s after a Run now or an API fire; its two observed cron fires opened theirs 3 m 42 s and 11 m 04 s after the scheduled minute, the second after a hung PR call and a retry. Its PyPI numbers matched the same script run on our always-on machine, every daily count.
Five things broke or needed a workaround. Each is a property of the job, not of the setup:
Scope that grows mid-run.
Widening a session's repositories mid-run was unreliable: one repository the App already covered attached without a refusal; another was refused three times by the permission classifier, the automatic check that approves or refuses an action in a hosted session. Plan on the set chosen at creation.
Hosts nobody named.
An off-list host fails with a bare 403 until it is added to the environment's allow-list. Anything outside the cloned repositories — a notes vault, local files — is not there at all.
Output that is not pushed.
The container is reclaimed when idle, and the session shows nowhere but the repository.
Tooling built on GraphQL gh commands.
Refused; REST only.
Work that needs a particular commit author.
Every commit is the Claude App's.
The shape our data supports: a job decided up front, living in GitHub, ending in a pushed PR, on named hosts and light compute (4 vCPU / 15 GiB).
Our one scheduled job duplicated, number for number, what an always-on machine already did: where the machines already stay on, the cloud added availability, not a capability.