- Go 100%
Reports Claude Code session activity to gosh: one event per prompt typed and per assistant turn, using each record's own cwd. Prompt text is never reported; the only free text is the session title and tool names. |
||
|---|---|---|
| .gitignore | ||
| go.mod | ||
| LICENSE | ||
| main.go | ||
| main_test.go | ||
| README.md | ||
gosh-claude
A gosh plugin that reports Claude Code session activity: when you were working with Claude, and in which directories.
Claude Code logs every session to ~/.claude/projects/*/*.jsonl, one record per line, each with a
timestamp and the working directory. gosh-claude collect turns those into gosh activity events:
| kind | one event per |
|---|---|
prompt |
prompt you typed (detail: the session title) |
assistant |
assistant turn (detail: the tools it called, e.g. Bash,Read) |
Tool results, attachments and other bookkeeping records are not reported. Prompt text is never
reported; session logs can contain secrets, so the only free text sent is the session title.
The directory of each event is the record's own cwd, so a session that moves between directories
or worktrees is attributed correctly.
Install
go install git.batts.cloud/vbatts/gosh-claude@latest # puts gosh-claude in $(go env GOPATH)/bin
gosh plugin add claude
gosh collect
Then gosh report and gosh timeline include Claude activity (@claude lines). CLAUDE_CONFIG_DIR
is honoured; gosh-claude collect --dir overrides it.
Protocol
gosh-claude describe
gosh-claude collect --since <unix seconds> [--dir <claude config dir>]
Output is JSON lines; the full protocol and a guide to writing plugins are in gosh's docs/PLUGINS.md. Events are keyed by the record's uuid, so
collecting twice is harmless. Only the standard library is used.
License
MIT, see LICENSE.