Skip to content

GitHub Copilotでコード候補がブロックされる問題の解決方法

問題の説明

GitHub Copilot使用中に、次のエラーメッセージが表示されることがあります:

Sorry, the response matched public code so it was blocked. Please rephrase your prompt

このエラーは、Copilotが生成したコード候補(約150文字)がGitHub上の公開コードと一致/類似している場合に発生します。セキュリティとライセンス保護のため、Copilotが候補表示を意図的にブロックする挙動です。

効果的な解決策

方法1: プロンプトの言い換え(推奨)

最も簡単な回避策です:

javascript
// ブロックされる例
function deepClone(obj) {} 

// 改善例 (具体的なコンテキストを追加)
function deepCloneObjectForReactState(inputObject) {}

プロンプト改善のポイント

  • コードの目的や使用シナリオを明記
  • 変数名・関数名を具体的に変更
  • 言語仕様のバージョン指定(例: "ES2022で書いて")

方法2: Copilot設定の変更

ブロックを無効化する手順:

  1. GitHubプロフィール → Settings → Copilot を選択
  2. Suggestions matching public code セクションを展開
  3. ドロップダウンで Allow を選択
  4. Save で設定を適用

注意点

  • 組織管理アカウントの場合、この設定が管理者により制限されている可能性があります
  • 公開コードのライセンス互換性問題を引き起こすリスクあり

方法3: コードフラグメントの最小化

ブロックされやすい長いコード生成を避ける手法:

python
# 非推奨
generate_feature_complete_authentication_system()

# 推奨
generate_login_component()  # 小機能単位で分割

根本原因と予防策

Copilotのブロック機構は:

  1. 生成候補と周辺150文字をコード断片として比較
  2. GitHub上の公開リポジトリと照合
  3. 類似度がしきい値を超えるとブロック

予防には以下が効果的:

  • ユニークな命名規則の採用
  • プロジェクト固有のコンテキスト(技術スタック・固有クラス名)を含める
  • コード生成を小さな単位で分割実施

公式ドキュメント:公開コードマッチングの管理も参照ください。