Gemini CLIでツールの事前確認を制御する方法
Claude Codeと同じように、Gemini CLIでもツールの実行確認を制御できる。
具体的には、.gemini/settings.json 等に以下の設定を追加する。
{ "tools": { "allowed": ["run_shell_command(go test)"], "exclude": ["run_shell_command(git push)] }}tools.allowed に書いたツールは事前の確認なく実行が可能になる。tools.exclude は確認されるのではなく、ツールが検出されなくなる。どこにも現れないツールは decision=ask_user に相当するのだろう。tools.core もあるが、tools.allowed との違いが分からない。
ツールのマッチング
Section titled “ツールのマッチング”ツールは run_shell_command や web_fetch のような内部ツール名を意味する。内部ツール名は /skills コマンドで調べられる。このとき、さらにコマンド単位または絞り込みを行うために引数を与えることもできる。
run_shell_command // すべてにマッチするrun_shell_command(git status) // git statusだけにマッチするドキュメントはとても探しづらいが、ルールはこの辺りに書かれている。
これによると、run_shell_command は前方一致でマッチする。Claude Codeでは任意の引数を許容するとき
---allowed-tools: Bash(go test:*)---のように表記するが、Gemini CLIでは特にワイルドカード等を書かなくてもいい。また、シェルの && 演算子などでコマンドを結合する場合も、分解したそれぞれのコマンドでマッチさせているようだった。
ポリシーによる制御
Section titled “ポリシーによる制御”Policy engineのドキュメントによると、こちらでも同様の設定が行えるらしいが試していない。
[[rule]]toolName = "run_shell_command"commandPrefix = "git "decision = "ask_user"priority = 100