error: Invalid command format.
結論
プロンプトを引用符で囲んでいないため、後ろの語が別の引数として扱われた状態。
確認した版
GitHub Copilot CLI v1.0.80
確認日
2026年8月22日
最終更新
2026年8月22日
根拠
実機で確認
エラー文字列
error: Invalid command format.
⚠️ 標準エラーに出て、終了コードは 1 です。
error: Invalid command format.
It looks like your prompt was not quoted, so the extra words were treated as separate arguments.
Wrap the prompt in quotes, for example: copilot -p "your prompt here"
Try 'copilot --help' for more information.
何が起きているか
プロンプトを引用符で囲んでいません。 シェルが空白で語を分けるため、2語目以降が「別の引数」として渡されています。
copilot -p hello world
Copilot CLI から見ると、こう渡っています。
| 位置 | 受け取ったもの |
|---|---|
-p の値 |
hello |
| 余った引数 | world |
⭐ -p は値を1つしか取りません。 残りは行き場が無いので、書式の誤りとして扱われます。
🔴 短いプロンプトだと成功してしまう
⚠️ 1語だけなら通ります。 そのため「昨日は動いたのに」となりがちです。
| 書き方 | 結果 |
|---|---|
copilot -p hello |
🔴 通る(たまたま1語だから) |
copilot -p hello world |
このエラー |
copilot -p "hello world" |
⭐ 正しい |
通ったほうが例外だと考えてください。
もうひとつの形
サブコマンドのつもりで、存在しない語を並べたときは別の案内が出ます。
error: Invalid command format.
Did you mean: copilot -i "config set no-such-key 1"?
For non-interactive mode, use the -p or --prompt option.
⚠️ これは「その語をプロンプトとして解釈しますか」という提案です。 サブコマンド名が間違っている可能性のほうが高いので、まず copilot --help で正しい名前を確認してください。
直し方
1. プロンプト全体を引用符で囲む
copilot -p "テストを実行して失敗を直して"
copilot -p "テストを実行して失敗を直して"
2. プロンプトに引用符が含まれる場合
macOS / Linux — 中に " があるならシングルクォートで囲みます。
copilot -p 'エラー "not found" の原因を調べて'
⚠️ シングルクォートの中では変数が展開されません。 変数を使うなら、その部分だけダブルクォートに切り替えます。
copilot -p "ファイル $FILE を確認して"
Windows(PowerShell) — 中の " はバッククォートで打ち消します。
copilot -p "エラー `"not found`" の原因を調べて"
3. 長いプロンプトは変数に入れる
引用符の入れ子で混乱するときは、先に組み立てます。
PROMPT='この関数のテストを書いて。境界値も含めること。'
copilot -p "$PROMPT"
$prompt = 'この関数のテストを書いて。境界値も含めること。'
copilot -p $prompt
4. 改行を含めたい場合
macOS / Linux
copilot -p "$(printf '次を直して:\n- テストの失敗\n- 型エラー')"
⚠️ echo -e は環境によって挙動が変わります。 printf を使ってください。
5. スクリプトや CI で使う場合
シェルによる分割は、変数を引用符で囲み忘れたときにも起きます。
copilot -p "$PROMPT"
🔴 copilot -p $PROMPT と書くと、$PROMPT の中身が空白で分割されます。 手で打ったときは通っても、値が長くなった途端に落ちます。
再発防止
- ⭐
-pの後ろは必ず引用符で囲む。 1語のときも囲んでおけば、あとで語を足しても壊れません - スクリプトでは変数も
"$VAR"と囲む - 引用符が入れ子になるなら、先に変数へ入れてから渡す