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

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions