{"id":50359445,"url":"https://github.com/sorafujitani/ccsession","last_synced_at":"2026-06-01T02:00:45.209Z","repository":{"id":360383147,"uuid":"1249708194","full_name":"sorafujitani/ccsession","owner":"sorafujitani","description":"pick any past Claude Code session via fzf, then resume it from the right cwd","archived":false,"fork":false,"pushed_at":"2026-05-30T05:15:24.000Z","size":2116,"stargazers_count":14,"open_issues_count":3,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T01:03:05.557Z","etag":null,"topics":["anthropicanthropic","claude","claude-code","cli","developer-tools","fzf","golang","session-management","terminal"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sorafujitani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-26T01:13:48.000Z","updated_at":"2026-05-30T05:15:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"e51fd079-8ab7-41c9-98d6-ddabc575ba86","html_url":"https://github.com/sorafujitani/ccsession","commit_stats":null,"previous_names":["sorafujitani/ccsession"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/sorafujitani/ccsession","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorafujitani%2Fccsession","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorafujitani%2Fccsession/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorafujitani%2Fccsession/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorafujitani%2Fccsession/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sorafujitani","download_url":"https://codeload.github.com/sorafujitani/ccsession/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sorafujitani%2Fccsession/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33756577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropicanthropic","claude","claude-code","cli","developer-tools","fzf","golang","session-management","terminal"],"created_at":"2026-05-30T00:30:21.753Z","updated_at":"2026-06-01T02:00:45.164Z","avatar_url":"https://github.com/sorafujitani.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ccsession\n\n\u003e An fzf-powered session picker for `claude --resume`.\n\n![ccsession demo](./docs/assets/ccsession_demo.gif)\n\n`ccsession` lists every Claude Code session under `~/.claude/projects`, lets\nyou fuzzy-find across all of your projects with a live preview pane, and\nresumes the one you pick in its original working directory.\n\n## Features\n\n- **Cross-project listing** — every session from every project in one view,\n  sorted by last activity.\n- **Three search modes** — fuzzy (default), directory-only, and full-text\n  grep over JSONL transcripts.\n- **Live preview** — last 30 messages of the highlighted session, with\n  timestamps and roles. In grep mode the matched query is highlighted in the\n  preview so you can spot the hit at a glance.\n- **Faithful resume** — `chdir`s back to the session's original `cwd` before\n  exec'ing `claude --resume`, so paths and tooling Just Work.\n- **Single static binary** — written in Go with only the standard library.\n\n## Requirements\n\n| Tool | Required for |\n| --- | --- |\n| [`fzf`](https://github.com/junegunn/fzf) | interactive picker |\n| `claude` ([Claude Code CLI](https://docs.claude.com/en/docs/claude-code)) | resuming sessions |\n\n## Install\n\n### Go\n\n```sh\ngo install github.com/sorafujitani/ccsession/cmd/ccsession@latest\n```\n\nVersion metadata is recovered from `runtime/debug.ReadBuildInfo`, so\n`ccsession --version` works for `go install` builds as well.\n\n### Pre-built binaries\n\nGrab the `ccsession_\u003cver\u003e_\u003cos\u003e_\u003carch\u003e.tar.gz` for your platform from the\n[Releases](https://github.com/sorafujitani/ccsession/releases) page, extract\nit, and drop the binary somewhere on your `PATH`:\n\n```sh\ntar xzf ccsession_0.1.0_darwin_arm64.tar.gz\ninstall -m 0755 ccsession ~/.local/bin/\n```\n\nIf macOS Gatekeeper complains:\n\n```sh\nxattr -d com.apple.quarantine ~/.local/bin/ccsession\n```\n\n### Nix flake\n\n```sh\nnix run github:sorafujitani/ccsession             # one-off\nnix profile install github:sorafujitani/ccsession # install into a profile\n```\n\n### Homebrew\n\n```sh\nbrew install sorafujitani/tap/ccsession\n```\n\nThe formula lives in\n[`sorafujitani/homebrew-tap`](https://github.com/sorafujitani/homebrew-tap)\nand GoReleaser refreshes it on every tagged release. `fzf` is installed as a\ndependency; the `claude` CLI must be installed separately.\n\n## Usage\n\n```sh\nccsession                            # list -\u003e fzf -\u003e resume\nccsession list  [--grep Q] [--regex] # emit TSV rows to stdout\nccsession preview [--query Q] [--regex] \u003cid\u003e # render the preview pane (Q highlighted)\nccsession resume  \u003cid\u003e               # chdir to the session's cwd, exec `claude --resume`\nccsession --version\nccsession --help\n```\n\n### Keys inside fzf\n\n| Key      | Mode |\n| -------- | --- |\n| `Ctrl-G` | grep — refilters by user/assistant content on every keystroke; matches are highlighted in the preview |\n| `Ctrl-O` | dir — fuzzy match restricted to the directory column |\n| `Ctrl-F` | fuzzy — default; matches across time / dir / label |\n| `Enter`  | resume the selected session |\n| `Esc`    | cancel |\n\n## How it works\n\n1. `ccsession list` walks `~/.claude/projects/*/`, reads the tail of each\n   JSONL transcript in parallel, and prints one TSV row per session\n   (`id`, `epoch`, relative time, cwd basename, label).\n2. `fzf` consumes the TSV. The three key bindings swap fzf's matcher\n   between fuzzy mode, directory-only mode, and grep mode (which reloads\n   via `ccsession list --grep \u003cquery\u003e` on every keystroke). The current\n   query is also forwarded to the preview as `ccsession preview --query\n   \u003cquery\u003e \u003cid\u003e`, which highlights its matches in the rendered messages.\n3. On `Enter`, `ccsession resume \u003cid\u003e` resolves the session's original\n   `cwd`, `chdir`s into it, and `execve`s `claude --resume \u003cid\u003e` so the\n   resumed process fully replaces the picker.\n\n## Development\n\n```sh\nnix develop                    # Go + fzf + gopls + goreleaser\ngo build ./cmd/ccsession\ngo test ./...\n```\n\n### Snapshot a release locally\n\n```sh\ngoreleaser release --snapshot --clean --skip=publish\nls dist/\n```\n\n### Build with Nix\n\n```sh\nnix build\n./result/bin/ccsession --version\n```\n\n## Contributing\n\nBug reports and pull requests are welcome at\n\u003chttps://github.com/sorafujitani/ccsession\u003e. For larger changes, please\nopen an issue first to discuss what you'd like to change.\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsorafujitani%2Fccsession","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsorafujitani%2Fccsession","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsorafujitani%2Fccsession/lists"}