GitHub Copilot CLI error
Copilot CLI: CAPIError: 400 ... invalid_request_body
CAPIError: 400 {"message":"","code":"invalid_request_body"}Status: OpenLast verified 2 documented fixes3 sources
What it means
The Copilot API rejected the request body the CLI sent for a model call.
Causes
- Release notes name one confirmed cause: MCP tool schemas that some models (Gemini) reject. v1.0.89: "Gemini models no longer fail every request with 400 invalid request body when an MCP server exposes a tool whose schema puts a type or properties beside anyOf, such as a nullable discriminated union". v1.0.85: "MCP tools with boolean property or array-item schemas work with Gemini instead of causing a 400 error".
How to fix it
- Fix 1.
Upgrade to 1.0.89 or later for the MCP tool schema fixes listed in the release notes.
- Fix 2.
No maintainer has commented on the main thread (#1274), and it is still open for other causes.
More Copilot CLI errors
All 12 Copilot CLI errors✗ No model available. Check policy enablement under GitHub Settings > CopilotStatus: Fixed in releaseYou are not authorized to use this Copilot feature, it requires an enterprise or organization policy to be enabled.Status: By designRequest failed due to a transient API error. Retrying...Status: Open✗ Execution failed: Error: Failed to get response from the AI model; retried 5 times (total retry wait time: 5.927545045390875 seconds) Last error: Unknown errorStatus: Fixed in releaseExecution failed: CAPIError: 400 {"error":{"code":"bad_request","type":"websocket_error","message":"Duplicate item found with id fc_call_ikBrgmi06fcJeO6uIpJJEQbJ. Remove duplicate items from your input and try again."}}Status: Open✗ Model call failed: "Connection error." ✗ Execution failed: CAPIError: Connection error.Status: Fixed in releaseposix_spawnp failureStatus: Fixed in releaseServer failed to connectStatus: Fixed in release
Related reading
- Claude Code vs Codex vs Copilot CLI: Local Sandboxes ComparedCopilot CLI local sandboxing is GA. How it compares with Claude Code and Codex on defaults, network, credentials, Windows, and what still runs outside.
- GitHub Copilot CLI With Ollama: Local Models and the New SandboxCopilot CLI 1.0.94 finds local Ollama models from /model and ships an OS-level sandbox. Setup, the 4k context trap, and why local is not offline.
- Claude Sonnet 5.5 Developer Guide: Pricing and API ChangesClaude Sonnet 5.5 costs $2/$10 per million tokens, and cache reads fell to $0.10 on October 7 - half of Opus 5.5 on every line. Pricing math and API changes.
- GitHub Copilot's September Reset: Prepaid Seats, One Unified Agent Experience, Balanced Reviews by DefaultGitHub Copilot September changes: prepaid Business and Enterprise seats, one unified agent experience and Balanced reviews by default. What it means for teams.
- GitHub's August 17 Outage: Agent Fleets Need a 4-Hour Local FallbackGitHub's August 17 outage ran 7 hours 47 minutes across PRs, Actions, APIs and Copilot. Why coding agent fleets need a four-hour local fallback.
- GitHub Copilot for JetBrains Gains Persistent Memory and Ollama BYOKGitHub Copilot for JetBrains adds memory across chat sessions, Ollama as a BYOK provider, and enterprise settings for MCP access. What each feature does.
FAQ
What does "CAPIError: 400 ... invalid_request_body" mean in Copilot CLI?
The Copilot API rejected the request body the CLI sent for a model call.
How do I fix "CAPIError: 400 ... invalid_request_body"?
There are 2 documented fixes. Start with the first: Upgrade to 1.0.89 or later for the MCP tool schema fixes listed in the release notes.
Is this Copilot CLI error fixed?
Status: Open. Still open upstream. Any documented fixes are workarounds so far. Affected versions: Reported on 0.0.402 and later. Gemini-specific causes fixed in 1.0.85 and 1.0.89.
Sources
Last verified against 3 sources: official docs, maintainer replies and release notes.
Newsletter
Fixes for the tools you use, weekly
One email per week. New coding agent releases, what broke, and how developers are working around it.