Claude Code で npm run 系のコマンドをまとめて許可する書き方

Claude Code 公開:

Claude Code の permissions.allow で npm run、pnpm、yarn、npx のコマンドを確認なしで実行させるパターンの書き方を解説します。:* による前方一致の意味、install 系を除外する方法、Python やその他のツールへの応用例も紹介します。

検証日 2026年9月7日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. 設定例
  2. パッケージマネージャー別のパターン
  3. Python プロジェクトの場合
  4. 動作を確認する
  5. 関連する設定
  6. まとめ

npm run lintnpm run testnpm 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 推奨)
npmBash(npm run:*)Bash(npm install:*), Bash(npm i:*)
pnpmBash(pnpm run:*), Bash(pnpm test), Bash(pnpm lint)Bash(pnpm add:*), Bash(pnpm install:*)
yarnBash(yarn run:*), Bash(yarn test)Bash(yarn add:*), Bash(yarn install)
bunBash(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:*)"
    ]
  }
}

動作を確認する

  1. 設定を保存して Claude Code を再起動します。
  2. /permissions で allow の一覧を確認します。
  3. 「テストを実行して」と指示し、npm run test が確認なしで走れば成功です。
  4. 「lodash を追加して」と指示し、npm install lodash で確認が出れば ask も効いています。

関連する設定

scripts を自動許可にしたうえで、hooks で編集後に lint を必ず走らせると、自動化の範囲を広げても品質を保てます(hooks で lint と format を自動実行する)。permissions 全体の設計は親記事の settings.json で permissions を設計する を参照してください。

まとめ

  • Bash(npm run:*) で npm scripts をまとめて許可できる。npm install は別パターンなので巻き込まれない
  • npxpnpm 全体を許可する場合は、install / add 系を ask に入れる(ask が優先される)
  • Python なら pytestruffuv 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 が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。