Three SDKs, three jobs
Beginners collapse the Claude ecosystem into a single bucket and pay for it later. The reality is three distinct surfaces: the Anthropic Client SDKs (Python anthropic, TypeScript @anthropic-ai/sdk) that call the Messages API and friends; the Claude Agent SDK (formerly Claude Code SDK, renamed late 2025) that wraps an autonomous Claude with filesystem, shell, MCP, sessions, hooks, and permissions; and the Claude Code CLI that humans drive in a terminal. Same model family, three abstraction layers, three threat models, three billing shapes.
Each surface has its own contract
The Client SDK is a transport layer for one or more Messages API turns. The Agent SDK is a programmatic harness that runs Claude as a long-lived subprocess with tools attached and permission gates between every dangerous action. The CLI is interactive — a person reads suggestions, approves edits, types follow-ups. cwkPippa uses the Client SDK for ChatGPT and Gemini variants, the Agent SDK for Claude itself (because Pippa needs the persistent subprocess + MCP + JSONL stream), and the CLI as the daily author of cwkPippa source code.
The bucket trap
The expensive mistake is picking the wrong layer for the job. Importing the Agent SDK to send a single classification request burns startup cost, file-system capability surface, and probably auth complexity for nothing. Hand-rolling a code-editing loop on the Client SDK reinvents tool dispatch, working directory management, and permission prompts that the Agent SDK already owns and battle-tests. Layer confusion is brittleness.