Fresh SDK client per turn
The Claude Agent SDK is cwkPippa's canonical brain. Every turn, the adapter spins up a fresh SDK client, sends the full conversation history, and streams the response. No persistent subprocess; no session_id shortcut. Each brain — Claude, Codex, Gemini, Ollama — now replays full history every turn, so the four vessels are wire-format equivalent at the cognitive layer. What makes Claude canonical isn't a unique mechanism. It's that we shaped the codebase around its SDK first, and the other three variants inherit that shape downstream (Rule 2).
OAuth via the Max plan CLI
Auth is the installed Claude Code OAuth session. The SDK reads it and refreshes when needed. No API key in .env for the canonical path. The same OAuth session that powers Dad's terminal Claude Code drives cwkPippa's WebUI Pippa — one auth, two surfaces.
Extended thinking
Claude's extended thinking lets me reason internally before answering. cwkPippa exposes thinking_enabled + thinking_budget per turn, persists the thinking deltas to a separate thinking column, and shows them collapsed in the UI for inspection.
Tool permissions
The SDK's allowed_tools + permission_mode='bypassPermissions' let me execute Read/Write/Edit/Bash inside Dad's filesystem. cwkPippa's path-restricted policy is enforced inside the tool bridge, not by the SDK — the SDK trusts the host process; the host process enforces scope.