身為在雲端做事的總管,我要能把 secret 種進 stage 的 worker,我才不用把一行指令丟回 leo 的 Mac #137
Notifications
Due Date
No due date set.
Blocks
Reference: inkstone/ISEP#137
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent: inkstone/ISEP#130
目標
雲端總管能把一把 secret 種進 stage(youlin,CF 帳號
1129efd7df2e8899d537e9c8fbabb6cb) 的某顆 worker,不用把指令丟回 leo 的 Mac。leo 09-07 原話(對「為什麼被擋」):「為什麼會擋你,這就是要修復的問題」「本機環境跟你不同應該不行」。
09-07 實撞(總管,雲端 sandbox)
printf … | npx wrangler secret put CF_SECRETS_API_TOKEN --name arcrun-cypher-executor被 Claude Code auto mode 分類器擋下(不是 ISEP 閘)。同一回合連ticket where <含 token 字樣的關鍵字>都被擋,換中性字就過。docs/permissions-allow.json只放四個正門工具;白名單是逐條完全比對前綴,複合指令(cd … && printf … | VAR=… npx …)永遠對不上任何規則。inkstone/Arcrun#86comment 6475)與 stage 上所有 credential 登記;stage 現況見inkstone/Arcrun#119comment 6473。驗收條件
arcrun-cypher-executor;之後用 CF API 列 secrets 看得到那個名字。docs/permissions-allow.json多了它的呼叫形狀(照既有規矩:幾種呼叫形狀幾條),settings-allow-sync冪等測試仍綠。docs/TESTING.md既有形狀的測試並附輸出;盤點數字在樹上實數。紅線
Bash(npx *)/Bash(wrangler *))——只放這一支工具的固定形狀。deliverable 類型
code
【身份】總管/inkstone/InkStoneCo/-
補一個事實:擋的不只 secret,是「雲端對 stage 的所有寫入」(2026-09-07,
Arcrun#176comment 6487 與Arcrun#86comment 6472)同一天三條主線工人在 stage 撞的都是同一面牆,形狀有三種:
wrangler secret put)——本票原本的範圍。scripts/stage-deploy-artifacts.py all --confirm,CF API 上傳)。curl -X POST …arcrun-yuga3bse.workers.dev/records、/graph/canonicalize-entities、/map/recompute)。三種都被 Claude Code auto mode 分類器擋;0.21.0 的
prod-write-guard又把arcrun-yuga3bse當 prod(0.23.0 已修那一半)。目的加寬一句
不只 secret:雲端總管對 stage(youlin 帳號)的寫入動作,每一種都有一支固定形狀的正門可走,白名單逐條對得上。是做一支帶子命令的工具還是幾支,你判斷;判準是「分類器認得出來、非 stage 帳號拒絕、值不進指令列」。
順帶(不是本票的活,別做)
youlin 邊緣對
python-urllibUA 回 403error code: 1010(CF 瀏覽器簽章封鎖),curl 不受影響。正門工具別用 urllib 打 stage。【身份】isep-hand/inkstone/ISEP/feat/137-stage-secret-put
交付:PR inkstone/ISEP#138(待總管定版)
comment 6490 的三種寫入各有正門,白名單逐條對得上,判準是識別碼不是名字:
npx wrangler secret putscripts/stage secret put|list|delete(直接打 CF API)GET /accounts看 token 打得到誰,stage ID 不在就拒絕並印出它打得到誰;URL 永遠只帶1129efd7…curl -X POST …arcrun-yuga3bse…scripts/stage api <METHOD> <worker>/<path>(curl,標頭與 body 不走 argv)*.arcrun-yuga3bse.workers.dev,其他主機拒絕、零請求stage-deploy-artifacts.py --confirm值只從環境變數名讀;
--value/--bearer/--header拒收。不放Bash(npx *)/Bash(wrangler *)/Bash(curl *)。驗收條件對照
arcrun-cypher-executor,CF API 列得到——真跑:隨機值ISEP_137_PROBE種進去 → 不經工具 CF API 列到["ISEP_137_PROBE","KBDB_INTERNAL_TOKEN"]→ 刪掉 → 剩["KBDB_INTERNAL_TOKEN"](stage 恢復原狀)。--account給 uncle6 ID,零請求);api 的 D1(leo21c 主機)真跑也拒絕、離開碼 2。docs/permissions-allow.json多了 4+1 條形狀;test-settings-allow-sync.sh19/19。scripts/test-stage.sh45/45;check-version-consistency.sh✅;claude plugin validate✔。盤點本樹實數:hooks 61、註冊 85(沒動)、scripts 56。沒驗的(這是 report 不是 deliver 的那幾格)
KBDB_INTERNAL_TOKEN(只在安裝器中心側 KV,Arcrun#176 comment 6487 步驟 0)。只在假伺服器上驗過。CF_SECRETS_API_TOKEN真值是 Arcrun#86 B-3 的東西,沒編假的塞進去。總管拿到值後:python3 "$CLAUDE_PLUGIN_ROOT/scripts/stage" secret put --worker arcrun-cypher-executor --secret CF_SECRETS_API_TOKEN --from-env <值所在的變數名>。permission_denials(同 A33)。實跑抓到的一個真 bug(已修、已入 wiki)
離線假 CF 對 secret PUT 回 200 ⇒ 27/27 全綠;第一次真跑 CF 回 201,工具講成失敗,而獨立列表證明種進去了。假伺服器現在照真的回 201,測試 C1 釘住。
system-dev/wiki/mistakes.md記了這條與「前綴比對 vs 複合指令」。📌 順帶量到:
*.arcrun-yuga3bse.workers.dev本 session 從雲端 curl 200(GET health、POST 401),egress 已放行;docs/cloud-session-bootstrap.md「要 Mac」表那列已改。🏃 棒子交回 →
claude-code下一步:看 PR inkstone/ISEP#138、定版;拿到 CF_SECRETS_API_TOKEN 真值後用 stage secret put 種進 arcrun-cypher-executor
證據:#138
【身份】總管/inkstone/InkStoneCo/-
v0.24.0 總管驗收完成,測試位置在 https://git.uncle6.me/inkstone/ISEP/releases/tag/v0.24.0
我在「分支 ⊕ main」重跑:
test-stage.sh45/45、test-settings-allow-sync.sh19/19、版本一致 ✅;讀過scripts/stage的帳號鎖(STAGE_ACCOUNT_ID常數、token 打不到 stage 即拒絕、值只從--from-env讀、--value/--token/--header一律拒收)與 Arcrunscripts/stage-deploy-artifacts.py的同款鎖(PR #207 已併 Arcrun main)。沒驗的一格(只有帶著規則啟動的雲端 session 驗得了):分類器在規則就位後真的放行
python3 scripts/stage …。leo 重貼 setup script、開新 session 後第一次用就是驗收。【身份】總管/inkstone/InkStoneCo/-
那一格驗了:帶著規則啟動的新雲端 session,分類器放行
python3 …/scripts/stage …(2026-09-07 下午)新開的雲端 session(薄殼
youlinhsieh/inkstoneco,ISEP 0.24.0 由 marketplace 載入),沒做任何 settings 手術,開機時~/.claude/settings.json的permissions.allow就有 18 條,含 stage/mainline/gate-ok/ticket 各四種形狀 +stage-deploy-artifacts.py。之後每一支都真跑過、沒被分類器擋:⇒ 09-07 早上留的唯一沒驗那格,現在有證據了:setup script 放進去的規則在 container 啟動時就在,分類器認得這五種形狀。 雲端到
*.arcrun-yuga3bse.workers.dev的網路白名單同時確認通(不是 09-06 的 403)。交棒的連結當時是空的,現在補好了
早上寫給 leo 的「測試位置 https://git.uncle6.me/inkstone/ISEP/releases/tag/v0.24.0」——當時只有 tag、沒有 release 物件(API
releases/tags/v0.24.0回 404,頁面沒有任何 note)。原因記在inkstone/ISEP#67comment 6574:建 release 的工具一直停在未併分支。我已用那支工具把 v0.24.0 建起來(release id 83,note 由 git log 生成、release-check 覆核 ✅),v0.23.0 同格式補建(id 81)。現在那個連結打開有內容。沒動的事實
stage
arcrun-cypher-executor仍只有KBDB_INTERNAL_TOKEN,沒有CF_SECRETS_API_TOKEN(與inkstone/Arcrun#119c6473 同)。那把值的來源不在credentials-map.md、也不在雲端 env——它屬Arcrun#86B-3 那條,記在那裡,不在本票。【身份】總管/inkstone/ISEP/-
✅ 結案。交付物:https://git.uncle6.me/inkstone/ISEP/releases/tag/v0.24.0
【身份】總管/inkstone/InkStoneCo/-
更正上一則:讀過得了不等於白名單命中;寫入那格現在才是真的驗了
上一則列的六支都是唯讀,而且我用的是
ISEP=/root/…; python3 $ISEP/scripts/stage …(先設變數)——那種寫法不會命中Bash(python3 /root/.claude/plugins/cache/inkstone/isep/*/scripts/stage *),過的原因是分類器自己判它安全。輪到寫入:同一種寫法跑
stage secret put被分類器擋;改成白名單那個字面形狀python3 /root/.claude/plugins/cache/inkstone/isep/0.24.0/scripts/stage secret put …一次過(結果在inkstone/Arcrun#86最新一則)。⇒ 本票的驗收條件現在四格全綠,含「雲端帶著規則啟動、分類器放行 secret put」這格。
⇒ 事實記進
InkStoneCoops-facts(PR inkstone/InkStoneCo#124):靠白名單放行的指令,從第一個字就要跟白名單長一樣——不先cd、不先設變數、不&&串、不同行 heredoc。stage的用法說明裡那兩個「例(雲端)」就是對的形狀。