@tyhld/conductor 0.12.22 → 0.12.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/scripts/hooks/README.md
CHANGED
|
@@ -126,7 +126,9 @@ branch protection は「CI が通っていない物を main に入れない」
|
|
|
126
126
|
5. **SQL の字面**は、実行しうる入口のときだけ見ます。入口とは、DB の道具・移行の道具・その場で走らせる形
|
|
127
127
|
(`python3 -c`・`node -e`・`python3 - <<EOF`・DB の道具へ流す形)・知らない実行ファイルです。
|
|
128
128
|
6. 本番反映は、`wrangler deploy`(`--dry-run` を除く)・`wrangler versions/pages deploy`・`vercel --prod`・
|
|
129
|
-
`vercel promote/alias/rollback`・`
|
|
129
|
+
`vercel promote/alias/rollback`・`vercel domains add/rm/buy/move/transfer`(本番ドメインの変更・便 6d6f2ff8)・
|
|
130
|
+
`npm/pnpm/yarn publish`・`supabase functions deploy`・「deploy の語+`--prod`」です。
|
|
131
|
+
★Preview への公開(`vercel`・`vercel deploy`・`--prod` 無し)と、読み取り(`vercel domains ls`・`vercel ls` 等)は自走です。
|
|
130
132
|
|
|
131
133
|
★**止める側(deny)は変えていません**。危険と抜け道の判定は、今までどおり機械的な区切り(`split_segments`)で見ます
|
|
132
134
|
(引用符の中まで見る方が、止める側としては広いため)。7日分の記録では、DENY の件数は前後で同じ(1,559件)でした。
|
package/scripts/hooks/policy.py
CHANGED
|
@@ -2804,6 +2804,13 @@ def _gate_release(words, tokens):
|
|
|
2804
2804
|
for w in words[1:]:
|
|
2805
2805
|
if w in ('promote', 'alias', 'rollback'):
|
|
2806
2806
|
return f'vercel {w}'
|
|
2807
|
+
# ★本番ドメインの変更(追加・削除・移管・購入)だけ関門。ls・inspect は読み取りなので自走
|
|
2808
|
+
# (便 6d6f2ff8・えふさん確定 #1: プレビューは自走・本番へ影響する操作は関門・強める向きのみ)。
|
|
2809
|
+
if 'domains' in words[1:]:
|
|
2810
|
+
after = [w for w in words[words.index('domains') + 1:] if not w.startswith('-')]
|
|
2811
|
+
if after[:1] and after[0] in ('add', 'rm', 'remove', 'buy', 'move',
|
|
2812
|
+
'transfer', 'transfer-in'):
|
|
2813
|
+
return f'vercel domains {after[0]}'
|
|
2807
2814
|
if v == 'wrangler' and '--dry-run' not in tokens and (
|
|
2808
2815
|
words[1:2] in (['deploy'], ['publish'])
|
|
2809
2816
|
or words[1:3] in (['versions', 'deploy'], ['pages', 'deploy'])):
|
package/scripts/update-guard.sh
CHANGED
|
@@ -1028,6 +1028,35 @@ if "allow" in perms:
|
|
|
1028
1028
|
del perms["allow"]
|
|
1029
1029
|
changes.append(f"permissions.allow を全削除({n} 件・関門素通りの原因を除去。deny は非改変)")
|
|
1030
1030
|
|
|
1031
|
+
# --- (2c) 自動許可封じのキー名・値を正す(便 6d6f2ff8=便2.7) ---
|
|
1032
|
+
# 【なぜ要るか(調査 6fd6eee0 の重大発見3)】utatane-backend の設定は、bypassPermissions モード
|
|
1033
|
+
# (全部自動で許可)を封じるキーが disableBypassPermissions: true になっていて、正しい名前と違う。
|
|
1034
|
+
# 間違ったキー名は Claude Code から無視される=封じが効かない。見本と他の全現場は
|
|
1035
|
+
# disableBypassPermissionsMode: "disable"。
|
|
1036
|
+
# 【正しいキーと値(出典)】permissions.disableBypassPermissionsMode を "disable" にする。
|
|
1037
|
+
# 出典: https://code.claude.com/docs/en/permissions (91行・632行。確認日 2026-09-18)
|
|
1038
|
+
# 「set permissions.disableBypassPermissionsMode ... to "disable" in any settings file」。
|
|
1039
|
+
# ★managed settings が最も強いが、どのスコープの settings でも効く(同ページ 632行)。
|
|
1040
|
+
# ★触るのはこのキーだけ。allow・ask・deny・hooks・sandbox・defaultMode には一切触れない。
|
|
1041
|
+
# ★冪等: 既に正しい名前と値なら何もしない(2回流しても差分は出ない)。
|
|
1042
|
+
_BYPASS_WRONG = "disableBypassPermissions" # 誤ったキー名(値も true 等)
|
|
1043
|
+
_BYPASS_RIGHT = "disableBypassPermissionsMode" # 正しいキー名
|
|
1044
|
+
_BYPASS_VALUE = "disable" # 正しい値(文字列・公式)
|
|
1045
|
+
if _BYPASS_WRONG in perms:
|
|
1046
|
+
_had = perms.pop(_BYPASS_WRONG)
|
|
1047
|
+
if perms.get(_BYPASS_RIGHT) != _BYPASS_VALUE:
|
|
1048
|
+
perms[_BYPASS_RIGHT] = _BYPASS_VALUE
|
|
1049
|
+
changes.append(
|
|
1050
|
+
f'自動許可封じのキーを是正: {_BYPASS_WRONG}={json.dumps(_had)} → '
|
|
1051
|
+
f'{_BYPASS_RIGHT}="{_BYPASS_VALUE}"(誤ったキー名は本体に無視され封じが効かない)')
|
|
1052
|
+
else:
|
|
1053
|
+
changes.append(f'古い重複キー {_BYPASS_WRONG} を削除({_BYPASS_RIGHT} は既に正しい)')
|
|
1054
|
+
elif _BYPASS_RIGHT in perms and perms.get(_BYPASS_RIGHT) != _BYPASS_VALUE:
|
|
1055
|
+
# 正しいキー名だが値が "disable" 以外(例 true)=公式の値へ揃えて確実に効かせる。
|
|
1056
|
+
_old = perms[_BYPASS_RIGHT]
|
|
1057
|
+
perms[_BYPASS_RIGHT] = _BYPASS_VALUE
|
|
1058
|
+
changes.append(f'自動許可封じの値を是正: {_BYPASS_RIGHT}={json.dumps(_old)}→"{_BYPASS_VALUE}"')
|
|
1059
|
+
|
|
1031
1060
|
# --- (3) サンドボックスのネット許可の不足分を追記 ---
|
|
1032
1061
|
# 職人が通信するたびに Claude Code のサンドボックスが「Network request outside of sandbox」を
|
|
1033
1062
|
# 聞いてくる。これは番人(cc2_guard)の判定とは別の OS レベルのゲートなので、番人では消えない。
|