The first time you open Chronicle, two things happen: macOS may show a Gatekeeper dialog depending on how you installed the app, and Chronicle indexes your session history from all three providers into a local SQLite database. Both are one-time events. After that, Chronicle opens in around 75 milliseconds and Gatekeeper never prompts again.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/josephyaduvanshi/claude-history-manager/llms.txt
Use this file to discover all available pages before exploring further.
First-launch flow
Clear any Gatekeeper prompt
Depending on your install method, macOS may block Chronicle on the first open. See the Gatekeeper details below for exactly what to do. Homebrew users see nothing and can skip this step.
Grant Full Disk Access (if needed)
Chronicle reads session files from
~/.claude/projects/, ~/.codex/sessions/, and ~/.gemini/tmp/. On some systems, macOS restricts access to these directories. If the sidebar is empty after indexing, go to System Settings → Privacy & Security → Full Disk Access, find Chronicle in the list, and toggle it on. Then relaunch the app.Wait for initial indexing
Chronicle indexes your entire session history on first launch. For a few thousand sessions this takes about 60–90 seconds. A progress indicator appears in the sidebar while indexing runs. This happens once — subsequent launches use the cached SQLite database.
The indexer reads only file metadata and transcript content. Nothing is sent off your Mac. The database is written to
~/Library/Application Support/Chronicle/chronicle.sqlite.Gatekeeper by install method
Chronicle is ad-hoc signed, not notarized. The exact dialog you see on first launch depends on which installation method you used. Each method requires a one-time acknowledgment — after that, the binary launches normally forever.| Install method | What macOS shows | What to do |
|---|---|---|
brew install --cask chronicle | Nothing — the .pkg postinstall script strips the quarantine attribute before the app ever opens. | Just open Chronicle. No prompt appears. |
.pkg installer | ”macOS cannot verify the developer of this package.” | Right-click the .pkg → Open → Open in the second dialog. |
.dmg | ”Apple could not verify Chronicle is free of malware.” | Run xattr -cr /Applications/Chronicle.app in Terminal, or right-click Chronicle.app → Open → Open. |
.zip | Same message as .dmg. | Same as .dmg. |
Homebrew install — no prompt
Homebrew install — no prompt
Homebrew runs Chronicle’s
.pkg installer under the hood. The package’s postinstall script calls xattr -dr com.apple.quarantine /Applications/Chronicle.app before the app is ever launched, so Gatekeeper has nothing to block. Open Chronicle from /Applications/ or Spotlight and it starts immediately..pkg install — one right-click
.pkg install — one right-click
macOS cannot verify the identity of the package because it isn’t signed with a paid Developer ID. To proceed: right-click (or Control-click) the
.pkg file in Finder and choose Open. A second dialog appears asking if you’re sure — click Open again. The installer then runs normally and Chronicle launches without any further prompts..dmg or .zip install — one terminal command
.dmg or .zip install — one terminal command
Files downloaded from the internet receive a Run this once in Terminal after dragging
com.apple.quarantine extended attribute that Gatekeeper checks before allowing the app to run. Remove it with:Chronicle.app to /Applications/. If you skip this step, Chronicle still opens — it detects the quarantine attribute and shows an in-app card with this same command and a copy-to-clipboard button.Alternatively, right-click Chronicle.app in Finder → Open → Open to bypass Gatekeeper without using Terminal.Why ad-hoc signing?
Chronicle is built with an ad-hoc signing key, not a paid Apple Developer ID. Apple’s Gatekeeper trusts binaries that are signed with a Developer ID account ($99/year) and submitted to Apple’s notarization servers. This project doesn’t carry that account yet.The binary you download is bit-for-bit what the GitHub Actions workflow at
.github/workflows/release.yml builds from main. Every release page lists a .shasums file — download it and run shasum -c chronicle.shasums to verify your download before opening it. The Gatekeeper warning is not a malware detection; it only means Apple hasn’t pre-screened this specific build.Granting Full Disk Access
Chronicle reads transcript files that Claude Code, Codex CLI, and Gemini CLI write to your home directory. If macOS restricts access to those paths, the sidebar will appear empty even after indexing completes.Open System Settings
Go to Apple menu → System Settings, or use Spotlight (
⌘Space) and search for “System Settings”.Navigate to Full Disk Access
Select Privacy & Security in the sidebar, then scroll down and click Full Disk Access.
Enable Chronicle
Click the + button (you may need to authenticate with Touch ID or your password), then navigate to
/Applications/ and select Chronicle.app. Make sure the toggle next to Chronicle is on.What indexing does
Chronicle’s indexer reads each provider’s transcript format and writes the results into a local SQLite database:- Claude Code — reads JSONL files under
~/.claude/projects/ - Codex CLI — reads JSONL rollout files under
~/.codex/sessions/ - Gemini CLI — reads JSON session files under
~/.gemini/tmp/
~/Library/Application Support/Chronicle/chronicle.sqlite.
The first index is the only slow one — 60 to 90 seconds for a few thousand sessions is typical. After that, a file-system watcher (using FSEvents, not polling) tracks only files whose size or modification time changed. A warm cache for 35 workspaces and 440 sessions reopens in around 75 milliseconds.
If you ever want a clean re-index, delete the database folder and relaunch:Chronicle will re-index everything on next launch.
After indexing: what you’ll see
Once the initial index completes, the Chronicle window shows:- Workspace sidebar — projects grouped by provider and color-coded by category (Flutter, Rust, Python, Web, and more)
- Session list — sessions within the selected workspace, sorted newest first, with live indicators for any sessions a CLI is actively writing to
- Search bar — press
⌘Kto focus; type/full: queryfor FTS5 full-text search across all transcript bodies
Next steps
Search sessions
Learn the slash-filter syntax and full-text search to find any session in seconds.
Resume sessions
Pick up any session in Ghostty, iTerm, Terminal.app, Alacritty, WezTerm, or kitty.