Skip to content

Breaking change: --headless --stdio removed without deprecation, breaks copilot-sdk and all downstream integrations #1606

@darthmolen

Description

@darthmolen

Describe the bug

The Copilot CLI removed support for --headless --stdio flags (the programmatic interface used by @github/copilot-sdk) without any deprecation period or migration path. The CLI now exits with code 1 when these flags are passed.

This is a silent breaking change — the CLI auto-updates itself, so every copilot-sdk user who runs their application discovers it's broken at runtime. There was no deprecation warning, no migration guide, and no changelog entry announcing the removal.

Impact

  • Every version of @github/copilot-sdk (0.1.0 through 0.1.26-preview.0) is broken. The SDK internally spawns copilot --headless --stdio — there is no way to override this.
  • Every downstream application using the SDK is broken: VS Code extensions, CLI wrappers, custom integrations.
  • The only workaround is pinning the CLI binary to v0.0.403 and passing --no-auto-update, which defeats the purpose of having an SDK.
  • The SDK team closed the ACP support request as "wontfix" (Feature Request: Support ACP (Agent Client Protocol) Compatible CLIs copilot-sdk#377), stating the SDK is specifically for the Copilot CLI. But the Copilot CLI broke the Copilot SDK.

Reproduction

# Install latest CLI (auto-updates to v0.0.410+)
copilot --version  # v0.0.410 or later

# This is what copilot-sdk does internally:
copilot --headless --stdio --log-level error
# Result: exits code 1, "Connection is closed."

# The replacement (ACP) works, but the SDK doesn't use it:
copilot --acp --stdio
# Result: works, accepts NDJSON JSON-RPC

Affected version

v0.0.410+ (verified on v0.0.413, v0.0.394)

Expected behavior

Either:

  1. Keep --headless --stdio working alongside --acp --stdio (backward compatibility)
  2. Deprecation period: CLI warns "headless mode deprecated, use --acp --stdio" for N versions before removing
  3. Coordinate with SDK team: Update copilot-sdk to use --acp --stdio before removing --headless

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions