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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions