GitHub Copilot adapters
Status: Production (v0.6)
Modules: llmwiki.adapters.contrib.copilot_chat, llmwiki.adapters.contrib.copilot_cli
Tracking issue: #93
llmwiki ships two adapters for GitHub Copilot, covering the two distinct storage layouts.
Copilot Chat (VS Code extension)
Module: llmwiki.adapters.contrib.copilot_chat
Source: llmwiki/adapters/contrib/copilot_chat.py
Registry name: copilot_chat (canonical) — copilot-chat is kept as a back-compat alias for existing configs (#626).
What it reads
The GitHub Copilot Chat extension for VS Code stores per-workspace conversation files under the editor's workspaceStorage directory:
<editor-data>/User/workspaceStorage/<hash>/chatSessions/*.jsonl
<editor-data>/User/workspaceStorage/<hash>/chatSessions/*.json
The adapter checks all three platforms and three editor variants (Code, Code - Insiders, VSCodium):
| Platform | Path pattern |
|---|---|
| macOS | ~/Library/Application Support/<editor>/User/workspaceStorage/ |
| Linux | ~/.config/<editor>/User/workspaceStorage/ |
| Windows | %APPDATA%\<editor>\User\workspaceStorage\ |
That gives 9 default roots (3 platforms x 3 editors).
Project slug derivation
Workspace directories use opaque hashes. The adapter truncates the hash to 12 characters and prefixes with copilot-:
workspaceStorage/a1b2c3d4e5f6789/chatSessions/conv.jsonl
-> copilot-a1b2c3d4e5f6
Schema versions supported
SUPPORTED_SCHEMA_VERSIONS = ["v1"]
Configuration
Override roots in config.json:
{
"adapters": {
"copilot_chat": {
"roots": ["~/custom/copilot/path"]
}
}
}
Copilot CLI
Module: llmwiki.adapters.contrib.copilot_cli
Source: llmwiki/adapters/contrib/copilot_cli.py
Registry name: copilot_cli (canonical) — copilot-cli is kept as a back-compat alias for existing configs (#626).
What it reads
GitHub Copilot CLI stores per-session event logs under:
~/.copilot/session-state/<session-id>/events.jsonl
The adapter also checks the COPILOT_HOME environment variable. When set, it adds $COPILOT_HOME/session-state/ as an additional root.
Project slug derivation
Uses the session-id directory name directly:
~/.copilot/session-state/abc-123-def/events.jsonl
-> abc-123-def
Schema versions supported
SUPPORTED_SCHEMA_VERSIONS = ["v1"]
Configuration
Override roots in config.json:
{
"adapters": {
"copilot_cli": {
"roots": ["~/.copilot/session-state"]
}
}
}
Or set the COPILOT_HOME environment variable:
export COPILOT_HOME=~/.copilot-custom
Testing both adapters
python3 -m llmwiki adapters # should list copilot_chat and copilot_cli
python3 -m pytest tests/test_copilot_adapters.py -v
Reference
llmwiki/adapters/contrib/copilot_chat.py-- Chat adapter sourcellmwiki/adapters/contrib/copilot_cli.py-- CLI adapter sourcellmwiki/convert.py-- the shared converter- README -- project overview