Claude Code で npm run 系のコマンドをまとめて許可する書き方
Claude Code の permissions.allow で npm run、pnpm、yarn、npx のコマンドを確認なしで実行させるパターンの書き方を解説します。:* による前方一致の意味、install 系を除外する方法、Python やその他のツールへの応用例も紹介します。
npm run lint、npm run test、npm run build のたびに確認ダイアログが出るのは、Claude Code の作業テンポを落とす最大の要因です。package.json の scripts は自分で書いたコマンドなので、まとめて自動許可にして問題ありません。
結論として、Bash(npm run:*) を allow に書けば npm scripts はすべて確認なしになります。npm install は別のパターンなので、意図せず許可されることはありません。
KEY POINT
この記事で分かること
- npm / pnpm / yarn / npx の scripts を許可するパターン
:*の意味と、install 系を巻き込まない書き方- Python(pytest、ruff)など他のツールへの応用
設定例
{
"permissions": {
"allow": [
"Bash(npm run:*)",
"Bash(npm test)",
"Bash(npx tsc:*)",
"Bash(npx vitest:*)",
"Bash(npx eslint:*)",
"Bash(npx prettier:*)"
],
"ask": [
"Bash(npm install:*)",
"Bash(npm i:*)",
"Bash(npm uninstall:*)"
]
}
}
npx は任意のパッケージを実行できるため、全体を許可せず、よく使うものだけ個別に allow しています。上の例で npx 全体を ask に入れていないのは、ask が allow より優先されるためです。Bash(npx:*) を ask に入れると、allow に書いた npx tsc も確認されるようになります。「個別に許可したものだけ自動、それ以外の npx は既定の挙動(default なら確認)」にしたい場合は、上の例のように ask には入れません。
用語解説
:* の意味: Bash(npm run:*) は「npm run で始まり、その後に何が続いてもよい」という前方一致です。npm run test -- --watch のような引数付きにも一致します。
パッケージマネージャー別のパターン
| ツール | scripts の実行 | install 系(ask 推奨) |
|---|---|---|
| npm | Bash(npm run:*) | Bash(npm install:*), Bash(npm i:*) |
| pnpm | Bash(pnpm run:*), Bash(pnpm test), Bash(pnpm lint) | Bash(pnpm add:*), Bash(pnpm install:*) |
| yarn | Bash(yarn run:*), Bash(yarn test) | Bash(yarn add:*), Bash(yarn install) |
| bun | Bash(bun run:*) | Bash(bun add:*), Bash(bun install:*) |
pnpm と yarn は pnpm lint のように run を省略できるため、よく使う scripts は個別に書くか、Bash(pnpm:*) で全体を許可して install 系を ask で止めます。ask が優先されるので、この組み合わせなら安全です。
{
"permissions": {
"allow": ["Bash(pnpm:*)"],
"ask": ["Bash(pnpm add:*)", "Bash(pnpm install:*)", "Bash(pnpm remove:*)"]
}
}
Python プロジェクトの場合
{
"permissions": {
"allow": [
"Bash(pytest:*)",
"Bash(python -m pytest:*)",
"Bash(ruff:*)",
"Bash(mypy:*)",
"Bash(uv run:*)"
],
"ask": [
"Bash(pip install:*)",
"Bash(uv add:*)"
]
}
}
動作を確認する
- 設定を保存して Claude Code を再起動します。
/permissionsで allow の一覧を確認します。- 「テストを実行して」と指示し、
npm run testが確認なしで走れば成功です。 - 「lodash を追加して」と指示し、
npm install lodashで確認が出れば ask も効いています。
関連する設定
scripts を自動許可にしたうえで、hooks で編集後に lint を必ず走らせると、自動化の範囲を広げても品質を保てます(hooks で lint と format を自動実行する)。permissions 全体の設計は親記事の settings.json で permissions を設計する を参照してください。
まとめ
Bash(npm run:*)で npm scripts をまとめて許可できる。npm installは別パターンなので巻き込まれないnpxやpnpm全体を許可する場合は、install / add 系を ask に入れる(ask が優先される)- Python なら
pytest、ruff、uv runを allow、pip installを ask にする
よくある質問
- Bash(npm run *) と Bash(npm run:*) は何が違いますか?
- どちらも npm run に続く任意の引数に一致します。:* は「その位置から先の文字列すべて」、スペース + * は「スペース区切りの引数」の意味で、実用上はほぼ同じ挙動です。
- npm を allow にすると npm install も自動実行されますか?
- Bash(npm:*) のように npm 全体を許可すると install も通ります。npm run だけを許可し、install は ask に入れるのが安全です。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。