Repository navigation
Factory: let cloud stations run node/npm on the bot's own factory PRs - #157
Draft
ShuhaoZQGG wants to merge 1 commit into
Draft
ShuhaoZQGG wants to merge 1 commit into
ShuhaoZQGG wants to merge 1 commit into
Conversation
… PRs claude-code-action 3fd0895 (2026-11-12, anthropics/claude-code-action#2001) denies code-running commands on PRs whose author lacks write access, and counts bots as untrusted. Factory PRs are opened by the Claude bot, so the #80 build (run 43660639722) had node, npm and vitest denied and stopped before doing anything. Set restrict_untrusted_prs: "false" on the plan and build stations. Their trust check is the gate: state.mjs only lets a station run after a factory actor opened the human gate, and fork PRs get no secrets. Both files stay identical on dev and master.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No issue: this fixes the factory after the #80 build failed. The same change goes to
devandmaster(two PRs), because the Claude action skips a workflow whose file differs from the default branch's copy.Why
On 2026-11-12, claude-code-action shipped anthropics/claude-code-action#2001: on a PR whose author doesn't have write access, it denies code-running commands (
node,npm,npx,vitest,pythonand more), even whenclaude_argsallows them. It counts bots as untrusted. Factory PRs are opened by the Claude bot (app/claudeopened #138, #139 and #143), so the #80 build (run 43660639722) had everynode/npmcommand denied and stopped before doing anything. The log says: "The author of pull request #143 is not confirmed to have write access, so commands that run code from the checkout are denied." The last good cloud build (#107, Nov 11) ran on the action version just before this change.What changes
restrict_untrusted_prs: "false"on the Claude step offactory-build.ymlandfactory-plan.yml(the plan station's "a factory PR closed" trigger is also a PR event with a bot author), with a comment explaining why.Security
This turns off a default guard for these two workflows only. The trust check stays where it already was:
state.mjsonly returnsnext: build(or picks an issue to plan) when the human gate label (plan:approved/factory:ready) was last added by an actor in.factory/config.json.factory/head branches, and pull requests from forks get no secrets.npm cion the PR's code before the Claude step.Production impact
None for users: CI workflow files only. Merging the
masterPR may start a production Workers build, which redeploys the same application code.Testing
restrict_untrusted_prsreads as'false'in both files.npm test/npm run test:e2e/npm run test:specs: not run locally (no app code changed). CI runs on this PR.Evidence (real Zoom client)
n/a: no Zoom-client spec covers these files.
Not verified
pull_request) build after the change. The Meeting polls: vote for Best Table Topics Speaker, Best Speaker, and Best Evaluator #80 build is running now by manual dispatch, which this guard doesn't affect.Look here first
restrict_untrusted_prslines and their comment in both workflow files.