Session Hopper is a native macOS launcher for jumping back into recent Claude Code sessions from the menu bar.
It scans your local Claude Code session files, shows recent sessions, and resumes a selected session in Ghostty with the original working directory.
- Lists recent Claude Code sessions from
~/.claude/projects - Opens a session in Ghostty from the correct project directory
- Runs Claude Code with
--dangerously-skip-permissions - Opens the project folder in Finder
- Copies a session ID to the clipboard
- Provides both a desktop window and a macOS menu bar item
Session Hopper intentionally resumes Claude Code with:
claude --dangerously-skip-permissions --resume <session-id>That means Claude Code bypasses permission prompts. This is useful for a trusted local workflow, but it is not a safe default for shared machines, unfamiliar repositories, or untrusted session data.
Use this app only if you understand that tradeoff.
- macOS 14 or newer
- Xcode or the Xcode command line toolchain
- Ghostty installed at
/Applications/Ghostty.app - Claude Code CLI available at
~/.local/bin/claude - Existing Claude Code sessions in
~/.claude/projects
Clone and run:
git clone https://github.com/Synistic/session-hopper.git
cd session-hopper
./script/build_and_run.shThe script builds a SwiftPM executable, stages a local .app bundle in dist/SessionHopper.app, and launches it.
To copy the app to your Desktop:
cp -R dist/SessionHopper.app ~/Desktop/SessionHopper.appRun the test suite:
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift testBuild the app:
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift buildBuild and verify launch:
./script/build_and_run.sh --verifySession Hopper is split into a small SwiftUI app target and a testable core library.
SessionHopperCorescans Claude Code session metadata, builds launcher commands, and owns reload state.SessionHopperrenders the desktop window, installs the AppKit menu bar item, and generates the custom icon.script/build_and_run.shbuilds a real macOS.appbundle from SwiftPM output.
The app reads only session metadata fields such as sessionId, cwd, timestamp, and gitBranch. It does not parse conversation content.
The custom icon uses Daniel Schmilinski's accent green #0c8c5e with a subtle teal gradient. The icon combines a terminal prompt, cursor, and small spark to represent session hopping.
MIT