Claude keeps Claude.
Native @anthropic-ai/sdk. Prompt caching, extended thinking, the full tool surface. Not flattened into a generic chat-completions shape.
Each agent has a provider (or multiple with priority order). The provider type, claude / openai / local / in-house / mcp, picks which native adapter to load.
The adapter formats the call in that provider's exact shape. No translation layer flattening features. Claude's thinking blocks stay thinking blocks.
Each adapter records success/failure events. Three failures in window → cooldown. The trace shows which provider was used and whether it was healthy.
If primary is in cooldown, the request routes to the backup provider, say, Claude as fallback for an unavailable local model. The cost event tags which provider actually ran.
Provider-specific outputs (Claude tool_use blocks, OpenAI tool_calls, local content blocks) normalize into PACKWOLF's internal shape for memory writes and audit logs. The provider's distinctive features still surface where they matter.