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設定の変更
ブロックを無効化する手順:
- GitHubプロフィール → Settings → Copilot を選択
Suggestions matching public code
セクションを展開- ドロップダウンで
Allow
を選択 Save
で設定を適用
注意点
- 組織管理アカウントの場合、この設定が管理者により制限されている可能性があります
- 公開コードのライセンス互換性問題を引き起こすリスクあり
方法3: コードフラグメントの最小化
ブロックされやすい長いコード生成を避ける手法:
python
# 非推奨
generate_feature_complete_authentication_system()
# 推奨
generate_login_component() # 小機能単位で分割
根本原因と予防策
Copilotのブロック機構は:
- 生成候補と周辺150文字をコード断片として比較
- GitHub上の公開リポジトリと照合
- 類似度がしきい値を超えるとブロック
予防には以下が効果的:
- ユニークな命名規則の採用
- プロジェクト固有のコンテキスト(技術スタック・固有クラス名)を含める
- コード生成を小さな単位で分割実施
公式ドキュメント:公開コードマッチングの管理も参照ください。