Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Copilot LSPNew to Visual Studio Code? Get it now.
Copilot LSP

Copilot LSP

statiolake

|
1 install
| (0) | Free
A thin VS Code adapter for GitHub Copilot inline completions and Next Edit Suggestions.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Copilot LSP

vscode-copilot-lsp は、GitHub公式の @github/copilot-language-server と VS Code 公開 Extension API を接続する薄いアダプターです。VS Code の Chat / Agent UI を使わず、通常の Inline Suggestion(ghost text)と Next Edit Suggestions(NES)を提供します。

この拡張は GitHub の公式製品ではありません。利用には GitHub Copilot の利用権が必要で、GitHub Copilot の利用規約が適用されます。

対応範囲

  • textDocument/inlineCompletion による通常のインライン補完
  • 自動トリガーと明示的トリガー
  • 複数候補、multiline、replacement range、CRLF/LF
  • textDocument/copilotInlineEdit によるNES
  • NESの挿入、置換、削除、複数候補、version検証、cancellation
  • Stable VS Code APIによるNESのdecoration表示、移動、accept、dismiss
  • LSP の incremental document synchronization
  • GitHub Device Flow(Language Server が管理する signIn / signOut)
  • ローカル workspace と workspace Extension Host 上での Remote / Dev Container / SSH / WSL
  • Language Server の status、ログ、異常終了後の最大3回までの再起動

安定版 VS Code API には inline completion の「表示された」および部分 accept の通知イベントがないため、推測による didShowCompletion / didPartiallyAcceptCompletion は送信しません。accept 時に Language Server が返した command を実行する処理だけを行います。

Chat、Agent Mode、Agent Sessions、Copilot Edits、Copilot CLI、独自のサイドバーやモデル選択 UI は提供しません。NESの表示はStable APIのdecorationと標準WorkspaceEditを使用します。VS CodeのProposed Inline Edit APIには依存せず、ネイティブNESと同一の表示体験は提供しません。

設定

{
  "chat.disableAIFeatures": true,
  "copilotLsp.enable": true,
  "copilotLsp.enableAutoCompletions": true,
  "copilotLsp.debug.logging": false,
  "copilotLsp.nextEditSuggestions.enabled": true,
  "copilotLsp.nextEditSuggestions.autoTrigger": true,
  "copilotLsp.nextEditSuggestions.debounce": 300,
  "copilotLsp.nextEditSuggestions.renameSymbolSuggestions": true,
  "copilotLsp.nextEditSuggestions.extendedRange": true,
  "copilotLsp.nextEditSuggestions.renderMode": "decorations"
}

copilotLsp.debug.logging を有効にすると、JSON-RPC のメソッド名と redacted payload が Output に記録されます。トークン、認証情報、デバイスコードなどの secret-like な値は記録しません。通常のサーバーログも Copilot LSP Output Channel に集約されます。

ステータスバーのCopilotボタンをクリックすると、本拡張の有効・無効を切り替えられます。常にCopilotアイコンと状態アイコンを同じ幅で表示し、Readyはcheck、未認証・設定不備・エラーはwarning、無効はcircle-slashで表します。hoverにはCopilot: ON、Copilot: OFF、または問題の状態を含む短い表示を出します。

サインイン

コマンドパレットから Copilot LSP: Sign In を実行します。新規サインインが必要な場合は、Language Server の signIn 応答に含まれる user code をクリップボードへコピーし、サーバーが提供した workspace/executeCommand を実行してブラウザを開きます。Language Server がすでに認証済みの場合は device-flow challenge が返らないことがあるため、その状態をエラーとして扱いません。アクセストークンを本拡張が保存・管理することはありません。

VS Code の GitHub アカウントセッションは、公開されている vscode.authentication API から取得できますが、Copilot Language Server の公開 LSP 契約にはそのトークンを注入する方法がありません。本拡張ではセッションを横取りせず、Language Server 自身の signIn / signOut と認証状態を使用します。

Copilot LSP: Sign Out は Language Server の signOut を呼び出します。

Next Edit Suggestions

NESは編集後にdebounceしてLanguage Serverへ候補を問い合わせます。Language Serverへworkspaceのファイル変更監視も提供し、参照箇所を含むworkspace文脈を利用できるようにします。候補は対象範囲のdecorationとhoverで示されます。候補がカーソル位置にある場合はTabで適用し、カーソル外にある場合は最初のTabで候補rangeの開始位置へカーソルを移動して、次のTabで適用します。候補位置へ自動スクロールはせず、次のコマンドでも操作できます。

  • Copilot LSP: Trigger Next Edit Suggestion
  • Copilot LSP: Go to Next Edit Suggestion
  • Copilot LSP: Accept Next Edit Suggestion
  • Copilot LSP: Dismiss Next Edit Suggestion
  • Copilot LSP: Show Next/Previous NES Candidate

accept時は候補のrangeとdocument versionを再検証してからWorkspaceEditを適用し、成功した場合だけLanguage Serverが返したaccept commandを実行します。入力、document切り替え、Language Server再起動、古いversionの応答では候補を破棄します。

Stable APIの制約により、NES候補はCopilot純正のcode shifting、side-by-side diff、ネイティブInline Edit UIでは表示されません。renderModeで現在選択できるのはdecorationsだけです。Proposed APIをMarketplace版の必須経路にはしません。

TabのNES割り当ては、通常のInline Suggestionまたは候補ウィジェットが表示されている間は無効です。その場合はVS Code標準のTab操作が優先されます。Escapeは通常のsuggest/inline hintが表示されていない場合だけNESのdismissに使います。VS Codeの安定版APIでは純正NESの表示状態を完全には取得できないため、通常のsuggest/inline hintが表示されている場合はEscapeを拡張側で横取りしません。

実装モデル

VS Code Adapter
    ↓
Copilot LSP Client
    ↓ JSON-RPC over stdio
@github/copilot-language-server

VS Code 非公開 API、公式 Copilot 拡張の内部コード、Workbench のパッチは使用しません。Language Server は workspace 側の Extension Host で実行し、Remote URI は Uri の標準変換結果をそのまま LSP URI として使用します。

デスクトップの Extension Host では、可能な場合は公式パッケージに含まれるプラットフォーム固有バイナリを優先します。Remote Extension Host などでバイナリが利用できない場合は、Node.js 20.8 以上の JavaScript 配布物を実行します。macOS の Electron Extension Host では ELECTRON_RUN_AS_NODE=1 を使って Node モードに切り替えます。現在の依存パッケージには macOS arm64/x64、Linux arm64/x64、Windows arm64/x64 のオプション依存が含まれます。

開発

npm install
npm run check
npm run package

VS Code で .vscode/launch.json の Run Extension を選ぶと、コンパイル後に Extension Development Host が起動します。編集しながら実行する場合は Run Extension (watch) を使用します。

npm run package は VSIX を生成し、npm run publish は vsce publish を実行します。公開前に publisher、GitHub repository、Marketplace の認証状態を確認してください。

npm run check は TypeScript のコンパイルと JSON-RPC / 変換ロジックの単体テストを実行します。VS Code Extension Host を使う手動確認では、次を確認してください。

  • chat.disableAIFeatures: true でも ghost text が表示される
  • 公式 GitHub Copilot / GitHub Copilot Chat 拡張を無効にしても動作する
  • multiline completion を Tab で受け入れられる
  • document編集後にNESが表示され、挿入・置換・削除をacceptできる
  • NESの候補位置へカーソル移動でき、EscapeまたはDismissコマンドでdismissできる
  • NES表示中も通常Inline Completionが要求され、候補が競合しない
  • ステータスバーのCopilotアイコンで有効・無効を切り替えられる
  • 高速入力で古い候補が表示されない
  • workspace を閉じた後に Language Server プロセスが残らない
  • Dev Container、SSH Remote、WSL の各 Extension Host で起動できる

このプロジェクトは GitHub Copilot の認証・ネットワーク・契約状態を再実装しません。サブスクリプション、quota、proxy、GitHub Enterprise、ネットワークエラーは Language Server の状態通知と Output を確認してください。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft