原文(日本語に翻訳)
パーミッションルールに Tool(param:value) 構文を追加し、ツールの入力パラメータ(* ワイルドカード対応)でマッチングできるようになりました。例: Agent(model:opus) でOpusサブエージェントをブロック
原文(英語)
Added Tool(param:value) syntax for permission rules to match a tool's input parameters (with * wildcard), e.g. Agent(model:opus) to block Opus subagents
概要
これまでパーミッションルールはツール名単位でしか制御できませんでしたが、Tool(param:value) 構文によりツールの入力パラメータを条件としたルールを設定できるようになりました。* ワイルドカードも使用可能で、特定のモデルやパスなど、パラメータ値に基づいた細粒度の制御が実現します。
基本的な使い方
settings.json の permissions セクションで以下の構文を使用します:
json
{
"permissions": {
"deny": [
"Agent(model:opus)"
]
}
}パラメータ名と値は param:value の形式で指定します。* ワイルドカードで部分一致も可能です。
json
{
"permissions": {
"deny": [
"Bash(command:rm*)"
]
}
}実践例
OpusモデルのサブエージェントをブロックしてコストをAコントロール
json
{
"permissions": {
"deny": [
"Agent(model:claude-opus*)"
]
}
}コストが高いOpusモデルをサブエージェントで使用することを防ぎ、プロジェクトの予算を管理できます。
特定ディレクトリへのBashコマンドを制限
json
{
"permissions": {
"deny": [
"Bash(command:*secret*)"
]
}
}コマンド文字列に secret を含む操作をブロックします。
特定のMCPツール呼び出しを制御
json
{
"permissions": {
"allow": [
"mcp__database(query:SELECT*)"
],
"deny": [
"mcp__database(query:DROP*)",
"mcp__database(query:DELETE*)"
]
}
}読み取り専用クエリのみ許可し、破壊的な操作をブロックする例。
複数ルールを組み合わせる
json
{
"permissions": {
"deny": [
"Agent(model:opus)",
"Bash(command:sudo*)",
"Write(file_path:/etc/*)"
]
}
}注意点
param:valueのパラメータ名はツールの実際の入力フィールド名と一致している必要があります*ワイルドカードは文字列の前方・後方いずれにも使用可能ですallowとdenyの両方でこの構文が使用できます- ルールが競合する場合は
denyが優先されます - ワイルドカードのみ(
Agent(model:*))は全パラメータ値にマッチします