Discover, resume, and automate Claude Code sessions
Background agent control, deep session search, one-keystroke resume, agentic loops, usage analytics, and quick prompts on macOS and Windows.

Dispatch and control Claude Code's native background agents from one list.
Manage Agents requires Claude Code 2.1.169 or later and uses the CLI's own login and billing source. Saved ClaudeCast API credentials are reserved for in-Raycast prompt commands.
Fast project switching for Claude Code. Browse all your projects with favorites, recents, and session counts.
Full-text search across every Claude Code conversation on disk.
dir:project-name and project:project-name query filters<local-command-*> and short slash-only prompts out of the result listHandle Claude questions, tool permissions, plan approval, and agent waiting states through Raycast.
ExitPlanMode requestagent_needs_input requestThe installer edits the selected Claude config directory's settings.json. Uninstall removes ClaudeCast's command handler and leaves other hook events, matchers, commands, and settings unchanged.
Use one session inbox for Claude CLI transcripts and validated metadata from Claude Desktop, VS Code, and Conductor.
Curated collection of production-tested prompts with variable substitution.

Categories

Autonomous agentic execution that breaks down complex tasks and runs them with fresh context per iteration.

How It Works
Features
.ralph/stopbash .ralph/resume.sh 10powershell -ExecutionPolicy Bypass -File .ralph\resume.ps1 10Git-aware Claude Code workflows for common tasks.


Quick prompt with automatic context capture from VS Code. Select text anywhere, hit the hotkey, and get answers without opening a terminal.
One-keystroke code transformations from any app.


One keystroke to continue your last Claude Code session. No UI - just launches directly.
Real-time Claude Code status in your menu bar.
Raycast does not expose menu-bar commands on Windows. Windows users can open Manage Agents and Usage Dashboard from Raycast.
Inspect Git worktrees used by Claude Code and its background agents.
Windows users can browse and launch Claude Code histories inside installed WSL distributions.
wsl.exe --list --quiet$HOME/.claude/projects after realpath containment checkswsl.exe argument arrays\\wsl.localhost or \\wsl$ for Windows file actionsLocal cost estimates and server-side Claude subscription limits in one dashboard.
Claude Code CLI: Install the native Claude Code build.
macOS:
curl -fsSL https://claude.ai/install.sh | bash
Windows:
winget install Anthropic.ClaudeCode
Raycast: Download from raycast.com
Node.js 22.22.2 or Later: Required only when importing or developing ClaudeCast from source.
Clone this repository or download the extension
Open Raycast and search for "Import Extension"
Select the claude-cast directory
Or run in development mode:
cd claude-cast
npm install
npm run dev
Ask Claude Code, Transform Selection, Git Actions, and Agentic Workflows use the active Claude CLI authentication. A normal claude auth login works without another ClaudeCast preference.
For environments where Claude Code cannot use its saved login, generate a long-lived inference token:
Generate a long-lived OAuth token:
claude setup-token
Copy the token and add it to ClaudeCast preferences:
Subscription limits use the Claude account already connected through claude auth login. On macOS, ClaudeCast asks for access to Claude Code's Claude Code-credentials Keychain item when Usage Dashboard first needs a refresh. Linux and Windows use Claude Code's protected .credentials.json file.
ClaudeCast reads only the access token and required user:profile scope, sends the token only to https://api.anthropic.com/api/oauth/usage, and never writes credentials to its support directory, errors, or logs. The inference-only token produced by claude setup-token cannot load subscription limits.
Open Permission Inbox and run Install Claude Hooks from the Action Panel. ClaudeCast creates a private Node runner in Raycast's support directory, backs up an existing Claude settings.json once, and appends identifiable handlers for AskUserQuestion, ExitPlanMode, PermissionRequest, and agent waiting notifications.
Use Repair Claude Hooks after moving Raycast support data or changing the Claude config directory. Use Uninstall Claude Hooks to remove only ClaudeCast's handlers.
Open Raycast preferences and configure ClaudeCast:
CLAUDE_CONFIG_DIR, then ~/.claude.ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, or CLAUDE_CODE_OAUTH_TOKEN env vars, or existing claude auth login credentials.claude auth login. Usage Dashboard reads the existing protected Claude Code credential when refreshing five-hour and weekly limits.Set these in Raycast preferences:
| Command | macOS | Windows |
|---|---|---|
| Ask Claude Code | ⌘⇧C | Ctrl+Shift+C |
| Quick Continue | ⌘⌥R | Ctrl+Alt+R |
| Browse Sessions | ⌘⌥S | Ctrl+Alt+S |
| Launch Project | ⌘⌥L | Ctrl+Alt+L |
| Manage Agents | ⌘⌥A | Ctrl+Alt+A |
| Git Actions | ⌘⇧G | Ctrl+Shift+G |
| Agentic Workflows | ⌘⌥P | Ctrl+Alt+P |
| Transform Selection | ⌘⇧T | Ctrl+Shift+T |
# Install dependencies
npm install
# Start development
npm run dev
# Build for production
npm run build
# Lint code
npm run lint
# Run unit tests
npm test
# Fix lint issues
npm run fix-lint
claude-cast/
├── src/
│ ├── ask-claude.tsx # Quick Prompt command
│ ├── browse-sessions.tsx # Session Browser
│ ├── deep-search-sessions.tsx # Full-text Deep Search
│ ├── launch-project.tsx # Project Launcher
│ ├── quick-continue.tsx # Quick Continue
│ ├── git-actions.tsx # Git Actions
│ ├── prompt-library.tsx # Agentic Workflows
│ ├── transform-selection.tsx # Transform Selection
│ ├── menu-bar-monitor.tsx # Menu Bar Monitor
│ ├── usage-dashboard.tsx # Usage Dashboard
│ ├── claude-questions.tsx # Permission Inbox UI
│ ├── manage-agents.tsx # Native Background Agent Control
│ ├── manage-worktrees.tsx # Git Worktree Control
│ └── lib/
│ ├── agent-control.ts # Claude Agent JSON and Command Integration
│ ├── claude-question-store.ts # Hook Setup And Question Storage
│ ├── session-search-index.ts # Persistent Incremental Search Index
│ ├── session-inbox.ts # Desktop, VS Code, and Conductor Metadata
│ ├── subscription-usage.ts # Subscription Parsing And Forecasting
│ ├── claude-cli.ts # Claude CLI integration and auth gate
│ ├── session-parser.ts # JSONL session parsing and streaming usage scanner
│ ├── project-discovery.ts # Project detection
│ ├── context-capture.ts # VS Code context capture
│ ├── terminal.ts # Cross-Platform Terminal Launch Utilities
│ ├── windows-runtime.ts # Windows PATH and Terminal Integration
│ ├── worktree-control.ts # Git Worktree Discovery and Actions
│ ├── wsl-runtime.ts # WSL Store Discovery
│ ├── svg-chart.ts # SVG bar chart for the Usage Dashboard
│ ├── prompts.ts # Built-in prompts
│ └── usage-stats.ts # Usage statistics
├── assets/
│ ├── command-icon.png # Extension Icon
│ └── hooks/ # Cross-Platform Claude Hook Runner
├── package.json
├── tsconfig.json
└── README.md
MIT
Contributions welcome! Please read the contributing guidelines first.
Built with Raycast and Claude Code.
Search through full session content across all Claude Code conversations
Curated agentic workflows and prompts
Dispatch and control Claude Code background agents
Inspect and safely maintain Git worktrees used by Claude Code
Git-aware Claude Code workflows
Find and resume Claude Code sessions
Quick prompt with context capture from VS Code
Continue last Claude Code session
Transform selected text with Claude Code
Open Claude Code in a project
Monitor Claude Code usage and status
Detailed Claude Code usage and cost metrics
Answer Claude questions, permissions, plans, and agent requests through Raycast
dir: and project: filters, and exposes mentioned files as Open File actions.AskUserQuestion, PermissionRequest, ExitPlanMode, and agent waiting events. It supports single-choice, multi-select, freeform, allow, deny with reason, plan approval, plan deferral, and direct Manage Agents access. The Node runner validates each event, uses private atomic files, preserves user hooks, and removes only ClaudeCast handlers during uninstall.$HOME/.claude/projects roots and moves large prompts through private files.claude auth login credential and shows server-side five-hour and weekly utilization, remaining percentage, reset times, scoped model windows, refresh age, and stale fallback data. A 10-minute cache feeds bounded local snapshots and a weekly exhaustion forecast based on recent local weekday and hour usage rates. The dashboard keeps these limits separate from local token cost estimates and explains forecast confidence and data sufficiency.new window verb plus a typed cd "<cwd>" && <command>.anthropicApiKey, oauthToken), the env vars ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN / CLAUDE_CODE_OAUTH_TOKEN, and existing credentials reported by claude auth status --json. When none are present the user gets a friendly "Add token in preferences" toast instead of seeing the CLI's /login prompt inside the spawned process.cwd, metadata scanning continues until it reaches a user entry, and resolved-path cache entries expire after five minutes.cwd from bounded JSONL prefixes when sessions-index.json is missing, and handles native C--Users-... project-directory encoding.usage is cumulative. Naive summing inflated session totals by 2x to 4x. Now deduped by (message.id, requestId) so per-message totals reflect the final cumulative value once per request.timestamp field are excluded. Previously they passed through the filter and inflated reported costs for users with older session files.opus-4-7 row at the $5/$25 tier. Without it, Opus 4.7 sessions matched the older opus substring and were billed at the $15/$75 tier (3x overcharge).opus-4-1 row at the $15/$75 tier for users still resuming pre-4.5 sessions.LaunchType.Background skip of the project-discovery scan; bounded newest-first iterator in listAllSessions that stops statting once it has the top N; message and content caps in getSessionDetail (last 200 messages, 5KB per message) so browse-sessions detail view stops materializing megabyte arrays into React state; explicit stream-listener cleanup in streamSessionUsage for back-to-back invocations.$ Escape Bug: Stopped escaping $ in commands sent to Terminal.app and iTerm. Previously a command like bash -c 'echo $SHELL' would print the literal text $SHELL instead of expanding the variable.usage-dashboard Redundant Daily Stats Scans: The 7-day daily stats no longer reload on every range tab switch (today/week/month/all). Loaded once on mount.calculateStatsWithUsage Mutation: Stopped mutating SessionMetadata objects with computed costs. Top sessions are now a lightweight {id, projectName, firstMessage, cost} projection.--single-instance so window-mode launches reuse the running kitty instance rather than spawning a separate process.allow_remote_control yes and a listen_on socket in kitty.conf; otherwise it falls back to a new window. Warp always opens a new window (its YAML launch config does not support opening in an existing window as a tab).⌘P to ⌘⇧P to avoid conflict with a Raycast reserved shortcut.warp://action/new_tab?command= URL scheme with a temporary YAML launch configuration opened via warp://launch/. Reliably opens a new window with the correct working directory and command. Double quotes in the cwd path are escaped, and the temp config cleanup window is 30 seconds to handle cold launches.--model flag when resuming or continuing sessions. Claude Code remembers the model internally, and passing --model explicitly could disable features like extended context windows (1M). The --model flag is now only used for new sessions via the Launch Project model preference.my_project) now resolve correctly when browsing sessions. Claude Code encodes underscores as dashes in directory names, and the filesystem walk now probes underscore variants alongside dash variants._ with - alongside / and ., matching Claude Code's actual encoding behavior.bypassPermissions, auto, plan) now resume with the same mode. The permissionMode is parsed from session JSONL and passed as --permission-mode flag to Claude Code.--model flag to Claude Code.costUSD field from session datasanitizeString() to strip lone UTF-16 surrogates from session JSONL data at ingresssafeTruncate() to prevent .slice() from splitting valid surrogate pairs at preview boundaries~/path not expanding in Ask Claude and Prompt LibraryexpandTilde() helper using os.homedir() applied at Ask Claude, Prompt Library (including Ralph Loop), and the shared terminal launcher/ and . as - in directory names, making the previous naive decode incorrect for usernames with dots or project names with dashesencodeProjectPath to correctly encode both / and ..ralph/resume.sh script when max iterations reachedtouch .ralph/stopANTHROPIC_API_KEY in preferences alongside existing OAuth token optionlimit and afterDate options to skip unnecessary files