… 1.87.2 + extra_headers) (#98)
* fix(deps): pin all dependencies to exact versions; bump litellm to 1.87.2
litellm 1.87.2 fixes the chatgpt/* (ChatGPT subscription) provider
returning empty Responses output (BerriAI/litellm#25429) and auto-injects
GitHub Copilot IDE-auth headers in the chat path (BerriAI/litellm#20113).
All direct dependencies are now pinned exactly as a supply-chain
precaution (cf. the litellm package-poisoning incident) — the README
already claimed litellm was pinned to a safe version, but pyproject
carried no constraint at all. Versions match what uv.lock already
resolved, so installed behavior is unchanged apart from litellm
1.85.0 -> 1.87.2.
Refs #94
* feat(llm): forward config extra_headers to all LLM calls; no key warning for OAuth providers
Issue #93: users on GitHub Copilot (and similar providers) need custom
HTTP headers (Editor-Version etc.) on every LLM request, and adding
extra_headers to config.yaml silently did nothing — the key was loaded
into the config dict but never forwarded.
config.resolve_extra_headers() validates/stringifies the mapping, and
cli._setup_llm_key (called by every LLM-using command) stashes it via
config.set_extra_headers(). The two call funnels read the stash:
- compiler._llm_call/_llm_call_async pass it as litellm extra_headers
(explicit per-call kwargs still win),
- every agents-SDK Agent gets ModelSettings(extra_headers=...), which
LitellmModel forwards to litellm.acompletion; build_chat_agent and
skill_runner inherit it via base.clone().
Issue #94: OAuth/subscription providers (chatgpt/*, github_copilot/*)
authenticate via device flow and need no API key, so the
'No LLM API key found' warning is skipped for them.
Closes #93
Refs #94
Relevant issues
Fixes #19873
Pre-Submission checklist
tests/litellm/directorymake test-unitType
🐛 Bug Fix
Changes
GitHub Copilot system prompts are not passed when routing requests because LiteLLM was converting
role: systemtorole: assistantby default.Why? This was a legacy workaround when the GitHub Copilot API didn't support system prompts.
Solution
Remove system→assistant conversion - The API now supports system prompts natively for all models (Claude, GPT, etc.)
Auto-add Copilot headers - Required headers (
editor-version,user-agent, etc.) are now automatically injected for/chat/completions, same as/responsesendpoint.Deprecate flag -
disable_copilot_system_to_assistantis now deprecatedBefore
After
Backwards Compatibility
extra_headersstill work (user headers override defaults)disable_copilot_system_to_assistantflag exists but is ignored (deprecated)Docs