Claude Mastery
#13 · Wednesday Edition
⌨️ CLI POWER MOVE
🔥 New🔧 Try It
v2.1.108 — Prompt Cache TTL Control, /recap, and 14 Fixes

v2.1.108 dropped April 14 with the kind of release that mostly fixes paper cuts but hides one significant lever: prompt cache TTL configuration.

Two new env vars control cache behavior:

bash
# Opt into 1-hour cache TTL (API key, Bedrock, Vertex, Foundry)
export ENABLE_PROMPT_CACHING_1H=true

# Force 5-minute TTL (override longer defaults)
export FORCE_PROMPT_CACHING_5M=true

If you disabled telemetry (DISABLE_TELEMETRY), you were silently getting 5-minute cache instead of 1-hour on subscriber plans. v2.1.108 fixes that — your cache now works as intended without needing to opt in.

New commands and aliases:

  • /recap — returns context when you come back to a session after being away. Configurable in /config, force-enable with CLAUDE_CODE_ENABLE_AWAY_SUMMARY if telemetry is off.
  • /undo — alias for /rewind. Less to remember.
  • The model can now discover and invoke /init, /review, and /security-review via the Skill tool — no more manually typing slash commands the model should have found itself.

Quality-of-life fixes worth knowing:

  • /resume now defaults to sessions from your current directory. Press Ctrl+A to see all projects.
  • /model warns before switching mid-conversation, since the next response re-reads full history uncached.
  • Error messages now distinguish server rate limits from plan usage limits and show status.claude.com on 5xx/529 errors.
  • Language grammars load on demand, reducing memory footprint.
  • Diacritical marks (accents, umlauts, cedillas) no longer get dropped when language is set — a quiet bug that was mangling non-English output.

14 total bug fixes, including paste broken in /login since 2.1.105, --teleport escape code garbage, and transcript writes silently failing on disk-full.

🏗️ AGENT ARCHITECTURE
🔥 New🔬 Deep Dive
Routines — Cloud-Hosted Automations with Three Trigger Types

This is the biggest Claude Code feature launch in weeks. Routines are saved Claude Code configurations — a prompt, one or more repos, and a set of connectors — that run autonomously on Anthropic's cloud infrastructure. Your laptop can be closed.

Three trigger types, combinable on a single routine:

Schedule — recurring cadence (hourly, daily, weekdays, weekly). Custom cron via /schedule update. Minimum interval: 1 hour. Runs stagger by a few minutes.

API — HTTP POST to a per-routine endpoint with a bearer token. Pass runtime context in a text field. Returns a session URL you can open to watch the run live.

bash
curl -X POST https://api.anthropic.com/v1/claude_code/routines/trig_.../fire \
-H "Authorization: Bearer sk-ant-oat01-xxxxx" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"text": "Deploy completed. Run smoke tests."}'

GitHub — reacts to pull_request and release events. Filters on author, title, body, base/head branch, labels, draft status, fork origin. Each matching event creates an independent session.

Key architecture decisions:

  • Routines run as full autonomous sessions. No permission prompts. No approval gates during execution.
  • Repos are cloned fresh each run from the default branch. Claude pushes to claude/-prefixed branches unless you explicitly unlock unrestricted pushes.
  • All your MCP connectors (Slack, Linear, Google Drive) are included by default — remove what the routine doesn't need.
  • Environments control network access, env vars, and setup scripts. Configure once, share across routines.
  • Actions appear as you: commits carry your GitHub user, Slack messages use your linked account.

Daily run caps: Pro 5, Max 15, Team/Enterprise 25. Extra usage (metered) available for orgs that enable it.

Research preview. Behavior, limits, and API surface may change.

🧭 OPERATOR THINKING
🔥 New🌿 Evergreen
Three Tiers of Automated Execution — and When to Use Each

With routines shipping, Claude Code now has three distinct tiers for unattended work. Picking the wrong tier wastes either money or capability.

Tier 1: /loop and claude -p (Local, CLI)

Runs in your terminal or cron. Full access to your local filesystem, env vars, and running services. No cloud dependency. You control the machine, the permissions, and the execution environment.

Best for: agents that need local state (databases, Docker, hardware), custom sandboxing, or run on a schedule measured in minutes. Your cron + claude -p agents live here.

Tier 2: Desktop Scheduled Tasks (Local, GUI)

Runs on your machine via the Desktop app. Access to local files. Created from Schedule > New local task. Survives app restarts.

Best for: recurring local tasks when you prefer a GUI over crontab. Same capabilities as Tier 1 but managed visually.

Tier 3: Routines (Cloud, Autonomous)

Runs on Anthropic infrastructure. Clones repos fresh each run. Connects to external services via MCP connectors. Triggers on schedule, API call, or GitHub event.

Best for: CI-adjacent work (PR review, deploy verification, docs drift), cross-repo automation, and anything that needs to run when your machine is off. The trade-off: no local filesystem, no local services, and daily run caps.

Decision framework:

NeedTier
Local files, Docker, databases1 or 2
Runs every 5 minutes1
Reacts to GitHub events3
Machine can be offline3
API-triggered from external systems3
No daily run cap1 or 2
GUI management2 or 3

The tiers compose. A Tier 1 cron agent can call a Tier 3 routine's API endpoint when it detects something locally that needs cloud-side follow-up.

🌐 ECOSYSTEM INTEL
🔥 New
Claude Code Desktop Gets a Full Redesign

The Desktop app shipped a ground-up redesign on April 14. This isn't a reskin — it's a rethink of how you manage parallel agent work.

Session sidebar. Every active and recent session in one place. Filter by status, project, or environment. Jump between repos as results arrive without hunting through terminal tabs.

Drag-and-drop layout. Terminal, preview, diff viewer, and chat are all moveable panes. Arrange them in whatever grid matches your workflow.

Integrated tools built in:

  • Terminal — run tests and builds alongside your session.
  • File editor — spot edits without switching apps.
  • Diff viewer — rebuilt for performance on large changesets.
  • Preview pane — render HTML, PDFs, and local app servers inline.

Side chat (Cmd+; / Ctrl+;) — branch a conversation without polluting the main thread's context. Ask a question, get an answer in an overlay, main task keeps running. This is the desktop version of /btw from the CLI.

Three view modes: Verbose, Normal, and Summary. Control how much of Claude's thinking you see.

Other notable changes:

  • Plugin parity: centrally-managed and locally-installed plugins now work in the desktop app.
  • SSH remote development extended to Mac (was Linux-only).
  • Available on macOS, Windows, and Linux.

If you've been using the desktop app as a glorified chat window, this redesign makes it a legitimate workspace. The sidebar alone solves the "which Claude needs me" problem that drives operators to build custom dashboards.

🔬 PRACTICE LAB
🔥 New🔧 Try It
Wire Up Your First Cloud Routine

What you'll do: Create a scheduled routine that reviews a repo nightly, then trigger it manually via the CLI and the API.

Prerequisites:

  • Claude Code v2.1.108+ (claude --version)
  • GitHub connected to claude.ai (/web-setup if not)
  • Claude Code on the web enabled (claude.ai/settings)
  • A GitHub repo you own (public or private)

Steps:

  1. Create a scheduled routine from the CLI:
bash
/schedule nightly code health check at 9pm

Claude walks you through the setup conversationally: repo selection, prompt, environment. For the prompt, use something like:

Review the repo for: TODOs older than 30 days, unused imports,
and any open issues labeled "bug" that have matching recent commits.
Post a summary as a new issue titled "Nightly Health: YYYY-MM-DD".
  1. Verify the routine was created:
bash
/schedule list

You should see your routine with its schedule, status, and next run time.

  1. Trigger it immediately without waiting for 9pm:
bash
/schedule run

Select your routine from the list. Claude starts a cloud session. Open the session URL it returns to watch the run in real time at claude.ai.

  1. Now test the API trigger. Go to claude.ai/code/routines, click your routine, click edit, and add an API trigger. Copy the URL and generate a token.
  1. Fire the routine from your terminal:
bash
curl -X POST <YOUR_ROUTINE_URL>/fire \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"text": "Manual trigger from lab exercise"}'
  1. Check the response — you'll get a claude_code_session_id and claude_code_session_url. Open the URL to watch Claude work.

Expected outcome: Two routine runs visible at claude.ai/code/routines — one triggered via /schedule run, one via the API. Each appears as a full session you can inspect, continue, or use to create a PR.

Verify:

  • /schedule list shows the routine with run history
  • Both sessions at claude.ai show completed runs with the expected repo analysis
  • The API response includes a valid session URL that loads