Claude Code のエラー

Unknown command: /<name>

結論

指定したスラッシュコマンドが見つからない状態。終了コード0で成功として返るため、CIでは失敗に気づけない。

確認した版 Claude Code v2.1.259
確認日 2026年9月3日
文言の照合 Claude Code v2.1.259
最終更新 2026年9月3日
根拠 実機で確認

エラー文字列

Claude Code
Unknown command: /<name>

🔴 このメッセージが出ても、終了コードは 0(成功)です。 標準出力に出ます。 CI では何も実行されないまま緑になります。

何が起きているか

指定したスラッシュコマンドが、その実行環境で見つからなかった状態です。

近い名前のコマンドがあると、候補まで出ます。

v2.1.238 で実測した結果です。プロジェクトに .claude/commands/hello.md を置いた状態で実行しています。

実行したもの 出たもの 終了コード
claude -p /hello Not logged in · Please run /login(コマンドは見つかっている) 1
claude -p /hallo Unknown command: /hallo. Did you mean /hello? 0
claude -p /hello(ファイルなし) Unknown command: /hello 0

⚠️ 終了コードだけでは、コマンドが実行されたかどうかを判定できません。 むしろ**見つからなかったときのほうが 0(成功)**になります。

🔴 CI で起きること

claude -p "/deploy-check"    # コマンド名を打ち間違えている
echo $?                       # → 0

パイプラインは緑になります。チェックは1つも実行されていません。

コマンドが見つからない理由

理由 確認するところ
コマンド名の綴り違い Did you mean の候補が出ていないか
プロジェクトにファイルが無い .claude/commands/<name>.mdそのチェックアウトに含まれているか
ファイルが .gitignore されている CI のチェックアウトには存在しないことがある
作業ディレクトリが違う プロジェクト用コマンドは実行時の作業ディレクトリから探される
プラグイン由来のコマンド そのプラグインがその環境に入っているか

直し方

1. その環境で実際に見えているコマンドを確認する

手元で動くことは、CI で動く理由になりません。確認は実行される環境で行ってください。

Windows(PowerShell)

Get-ChildItem -Recurse -Filter *.md .claude\commands -ErrorAction SilentlyContinue |
  ForEach-Object { "/" + $_.BaseName }

macOS / Linux

ls .claude/commands/*.md 2>/dev/null | sed 's|.*/|/|; s|\.md$||'

2. ファイルが git に入っているか確認する

CI で「無い」と言われる原因で最も多いところです。

git ls-files .claude/commands/

⚠️ 出力が空なら、そのファイルは**コミットされていません。**手元にしかないため、CI からは見えません。 .gitignore.claude/ が入っていないかも確認してください。

git check-ignore -v .claude/commands/deploy-check.md

3. CI では終了コードに頼らず、出力を検査する

終了コードが 0 でも実行されていないことがあるため、出力を見て判定します。

out=$(claude -p "/deploy-check")

if printf '%s' "$out" | grep -q '^Unknown command:'; then
  echo "コマンドが見つかりませんでした: $out" >&2
  exit 1
fi

printf '%s\n' "$out"

Windows(PowerShell)

$out = claude -p "/deploy-check"
if ($out -match '^Unknown command:') {
  Write-Error "コマンドが見つかりませんでした: $out"
  exit 1
}
$out

4. 作業ディレクトリを固定する

プロジェクト用コマンドは、実行時の作業ディレクトリを起点に探されます。 CI のステップで cd している場合は、リポジトリのルートから実行してください。

再発防止

  • 🔴 claude -p の出力を検査する。終了コードだけでは足りません。 見つからないときは 0 が返ります
  • コマンドを追加したら、コミットされているかを確認する(git ls-files .claude/commands/
  • CI に新しいコマンドを入れたら、まず単体で1回動かして確認する
  • 打ち間違いは Did you mean の候補で分かる。出ていたらそれが正しい名前

この手順で直りませんでしたか?

環境を添えて報告いただければ、追加の原因を検証してこのページに反映します。

エラーを報告する