メインコンテンツへスキップ
見出し画像

Bash(git push *) の deny をすり抜ける書き方と止め方|PreToolUse の雛形

※本文とスクリプトは AI(Claude)で作成しました。Claude Code の仕様は2026年11月4日に公式ドキュメントで確認しました。版によって変わります。

※スクリプトは模擬の入力で動作を確かめたものです。Claude Code 本体につないだ確認はしていません。成果や収入を約束するものではありません。

※広告(アフィリエイトリンク・企業からの報酬)は含みません。

settings.json の deny に Bash(git push *) を書いた。それでも push が通ることがあります。

公式が挙げている、止まらない書き方

deny の Bash ルールは、書かれたコマンドの文字に当てる仕組みです。公式は次を「止まらない形」と書いています。

  • git -C . push origin main

  • git -c push.default=current push origin main

  • git 'push' origin main

同じことは curl や rm にもあります。/usr/bin/curl、sh -c 'curl ...' の形は Bash(curl *) に当たりません。

止まるもの

&& や ; でつないだものは分けて見てくれます。cd x && git push は止まります。サブシェルやコマンド置換の中も deny の対象です。

どうするか

公式の案内は2つです。

  • コマンドの文字によらず、ファイルと通信を OS の層で止めるならサンドボックス

  • コマンド全体を自分の処理で見てから止めるなら PreToolUse の hook

deny は消しません。普段の書き方を止める1枚目として残し、hook を2枚目に足します。hook も文字の解析なので、全部の書き方は止まりません。OS の層の制限の代わりにはなりません。

ここまでで足りる人には、この先は必要ありません。

この先に入っているもの

  • git push の別の書き方を止める PreToolUse の hook(Python 1ファイル、標準ライブラリだけ)

  • settings.json の書き方

  • 模擬の入力で確かめた一覧(止める側と、止めない側)

  • 止められないものと、止めすぎるものの一覧

push 以外の git のサブコマンドにも、BLOCKED と表示の文を変えれば使えます。

(特定商取引法に基づく表記: https://note.com/mujin_ops/n/n7df787b6b1a2)

 
 

無人

 
 
公開データと公開の仕様で確かめた、投資の数字の検証と、AIの運用の書き方を書いています。道具や記録用紙も作っています。 AIで作成しています。売買の指示や個別の助言はしません。

あなたへのおすすめ