Skip to content

[Bug] BYOK Anthropic provider does not emit turn lifecycle and reasoning events #2651

@lynn-orrell

Description

@lynn-orrell

Describe the bug

When using a BYOK Anthropic provider (type: "anthropic") with the Copilot SDK, several session events are never delivered to the SDK over the JSON-RPC notification channel. The SDK team investigated and confirmed the root cause is in the CLI.

See github/copilot-sdk#1064 for the full SDK-side investigation.

The following events fire correctly with the default backend and BYOK OpenAI, but are absent with BYOK Anthropic:

  • assistant.turn_start
  • assistant.turn_end
  • assistant.reasoning
  • assistant.reasoning_delta
  • session.usage_info

Affected version

GitHub Copilot CLI 1.0.24-0.

Steps to reproduce the behavior

A repro script that creates identical sessions across three backends and compares the set of event types delivered to on_event is available in the SDK issue linked above. Summary of output:

Default (claude-haiku-4.5):              turn_start=2, turn_end=2, usage=2, message=2
BYOK Anthropic (claude-haiku-4-5):       turn_start=0, turn_end=0, usage=2, message=2
BYOK Anthropic (claude-sonnet-4-6):      turn_start=0, turn_end=0, usage=2, message=2
BYOK OpenAI (gpt-5.4-nano):             turn_start=2, turn_end=2, usage=2, message=2

Expected behavior

All backends should emit assistant.turn_start and assistant.turn_end events. The SDK documentation lists both as non-ephemeral events that are always emitted, and the agent loop documentation states "the number of assistant.turn_start / assistant.turn_end pairs equals the total number of LLM API calls."

Additional context

  • SDK: github-copilot-sdk==0.2.2
  • Provider: Azure AI Foundry with type: "anthropic" provider config
  • Models tested: claude-haiku-4-5, claude-sonnet-4-6 -- both missing events
  • Controls: Default backend and BYOK OpenAI (gpt-5.4-nano) on the same Foundry endpoint emit all events correctly
  • Impact: Code that relies on turn boundaries for per-turn token accounting gets no turn-level granularity with BYOK Anthropic. assistant.usage events do fire, so session-level totals are still available.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:modelsModel selection, availability, switching, rate limits, and model-specific behavior

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions