2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeのGitHub Copilot Agent Mode を最後まで走らせるためにやったこと

2
Last updated at Posted at 2026-03-31

概要

VSCode の GitHub Copilot Agent Mode は、エディタを見ながら少しずつ直すぶんには便利です。ただ、まとまった指示で自走させようとすると、実行確認や謎の途中終了、無関係のエラー判定で止まりやすく、工夫が必要でした。

そういう問題を改善するためにやった工夫で効果のあったものを紹介します。

ChatGPT Image 2026年3月30日 14_09_57.png

最初に結論まとめ

  1. 実行確認は VSCodeの設定 chat.tools.terminal.autoApprove を育てて対処
    1. 雑に許可するなら Allow All Commands in Session のような広い許可選択肢などもあり
  2. なぜか止まる問題は Instruction と カスタムエージェント を整備して対処
    1. モデルを新しくするだけでも解決する場合あり
  3. 無関係のエラーで止まる問題は、コードを整えたり実行対象を絞るスクリプトで対処
  4. 別のアプローチとして、GitHub Copilot CLIという手もあり
    1. GitHub Copilot CLI や VSCode との連携については、この記事でも紹介

用語

次の用語はこの記事とは直接関係ないので、説明なしで使います。

  1. カスタムエージェント(agent)
    1. エージェントを独自に定義してチャットで選択可能にするもの。
    2. .github/agents/*.agent.md に配置するエージェント定義ファイルを指す
  2. skills:
    1. 手順などを定義してエージェントが使えるスキルとして与えるもの。
    2. .github/skills/*/ 配下に配置するスキル定義一式を指す。

実行確認が多い事への対処

まず一番効いたのは、実行確認を減らすことでした。デフォルトだとほぼ全てのコマンド実行で確認が入ります。これは Premium Request の点では増えないので問題ないですが、人間の入力待ちが何度も入ることでかなり自走が途切れます。

対処としては一発で解決出来るものは無かったので、 VSCodeの設定 chat.tools.terminal.autoApprove を育てるのが基本です。正規表現で「このコマンドは許可する」というルールを増やしていくものです。単純なコマンドはそのまま書けば十分です。msbuildのような使い方が複雑な物はスクリプト化してgitリポジトリへ置き、そのスクリプト自体の相対パスを許可対象に入れておくと、さらに安定します。

最近は Allow All Commands in Session のような広い許可や、さらに全てのツール呼び出しを自動許可する Bypass Approvals モードなども増えたので、雑に全部許可したい時はそれでやれるようになりました。選択的に許可しておきたい時は引き続き autoApprove を育てるのが有効だと思います。

問題ないのに途中で止まる時の対処

次に厄介だったのが、エラーも出ていないし TODO も残っているのに、なぜか途中で止まるパターンです。

これには Instructions で「こういう時は止めずに続行する」を明示するのが効きました。さらに、プロンプトで毎回説明するより、専用のカスタムエージェントを用意して「何をもって完了とするか」「途中で止まらずどこまで進めるか」を書いておく方が安定しました。

特に効いたのは、完了条件を曖昧にしないことです。たとえば「修正して」だけではなく、「テストが通るまで続ける」「失敗したら原因を見て再修正する」のように、止まりどころを先に決めておくと途中終了が減りました。

ただしこれはモデル差も大きい印象です。GPT 5.2 の頃はかなり起きていましたが、GPT 5.4 では今のところだいぶ減っています。ということは、コンテキストウインドウが小さいと起きやすいのかもしれません。モデルを新しくするだけでも改善する可能性はありそうです。

エラー扱いで止まる時の対処

もう一つあるのが、「実際には進められるのに、何かのエラーを見て止まる」パターンです。これは編集対象外の部分にエラーがあっても止まることがあり、地味に困りました。

自分のところでは、C++/CLI や C++ 混在のソリューションで dotnet test を回すと止まりやすかったです。テスト対象自体は通るのに、途中で C++ 側のエラーが出るため、Agent が失敗扱いして止まることがありました。

なので、一部だけの作業であっても最低限、ソリューション全体のビルドが通る状態にしておくのはかなり重要です。加えて Instructions 側で、dotnet test を雑に打たせるのではなく、対象モジュールに絞って NUnit を実行させるようにすると止まりにくくなりました。

NUnitの方をskillsにまとめた例をこの記事で紹介しています。

GitHub Copilot CLIという手も

別のアプローチとして、2026/2/25にGAした GitHub Copilot CLI を使うという手もあります。これは元々そういう自走を狙って作られているようなので、目的にも合っています。

GitHub Copilot CLI や VSCode との連携については、この記事でも紹介しています。

まとめ

ここまで紹介したように工夫すれば、VSCodeの GitHub Copilot Chat でもだいぶ自走してくれます。GUIのコードエディタを使いながらやっていく場合は有効だと思います。

GitHub Copilotの自走優先で、GUIは組み合わせて使えれば良い、と言う場合はGitHub Copilot CLIも有効です。

上手く使い分けていきましょう!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?