Skip to main content

max / makenotwork

ops-exec: document pull_root in the agent config example Without it, /pull answers 403 "pull disabled: no pull_root configured", so an agent installed straight from the runbook cannot return the artifact it was just asked to build. The first real end-to-end run found this the expensive way: GO 0.5.0 checked out, built, signed, notarized, stapled, and passed Gatekeeper on mbp, then the driver failed on the last step trying to fetch the DMG. Sets it to the artifacts tree rather than $HOME, and says why: /pull confines every request under this root, and a $HOME root would hand any allow-listed caller ~/.tauri/passwords.env and the notary .p8. Verified on mbp -- the DMG pulls (200, 16MB) and passwords.env is refused (404, not under pull_root). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-16 15:14 UTC
Commit: 9c18d031b3e87f7afc269d0b05e8f7dc545be679
Parent: 301addf
1 file changed, +9 insertions, -0 deletions
@@ -8,6 +8,15 @@
8 8 # Replace with mbp's actual tailnet IP. 8765 mirrors the ACL example.
9 9 listen = "100.64.0.2:8765"
10 10
11 + # Root for `GET /pull`, which is how a driver retrieves the artifact it just had
12 + # this host build. Required for that: with no pull_root, /pull answers 403
13 + # "pull disabled: no pull_root configured", so a release builds, signs,
14 + # notarizes, and staples, then fails at the final step. Every /pull request is
15 + # confined under this root, so keep it to the artifacts tree -- NOT $HOME, which
16 + # would expose ~/.tauri/passwords.env and the .p8 to any allow-listed caller.
17 + # Omit the key entirely to leave /pull disabled.
18 + pull_root = "/Users/max/Dist"
19 +
11 20 # What THIS host is allowed to do — the ceiling for every caller. The Mac signs.
12 21 [grant]
13 22 actuate = ["build", "sign", "notarize", "staple", "package"]