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:
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 withCLAUDE_CODE_ENABLE_AWAY_SUMMARYif telemetry is off./undo— alias for/rewind. Less to remember.- The model can now discover and invoke
/init,/review, and/security-reviewvia the Skill tool — no more manually typing slash commands the model should have found itself.
Quality-of-life fixes worth knowing:
/resumenow defaults to sessions from your current directory. PressCtrl+Ato see all projects./modelwarns 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.comon 5xx/529 errors. - Language grammars load on demand, reducing memory footprint.
- Diacritical marks (accents, umlauts, cedillas) no longer get dropped when
languageis 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.
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.
-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.
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:
| Need | Tier |
|---|---|
| Local files, Docker, databases | 1 or 2 |
| Runs every 5 minutes | 1 |
| Reacts to GitHub events | 3 |
| Machine can be offline | 3 |
| API-triggered from external systems | 3 |
| No daily run cap | 1 or 2 |
| GUI management | 2 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.
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.
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-setupif not) - Claude Code on the web enabled (claude.ai/settings)
- A GitHub repo you own (public or private)
Steps:
- Create a scheduled routine from the CLI:
Claude walks you through the setup conversationally: repo selection, prompt, environment. For the prompt, use something like:
and any open issues labeled "bug" that have matching recent commits.
Post a summary as a new issue titled "Nightly Health: YYYY-MM-DD".
- Verify the routine was created:
You should see your routine with its schedule, status, and next run time.
- Trigger it immediately without waiting for 9pm:
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.
- 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.
- Fire the routine from your terminal:
-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"}'
- Check the response — you'll get a
claude_code_session_idandclaude_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 listshows 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