session-search — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited session-search (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Platforms: Claude Code / Cowork and Codex.find_sessions.pyandshow_session.pydetect the host (via theplatformstampinstall.shwrites, orAI_FIRST_PLATFORM) and route to the right store: Claude Code (~/.claude/projects) + Cowork transcripts, or Codex rollouts (~/.codex/sessions/**/rollout-*.jsonl). Both support list, time/cwd/title filters, and full-text--grep. Antigravity is not supported: its IDE conversations are AEAD-encrypted at rest (~/.gemini/antigravity/conversations/*.pb) and its unencrypted CLI store carries no parseable turn content, so the skill prints a clear "not available" message and exits.
Two scripts in scripts/ locate past sessions and dump their content:
find_sessions.py , discover + filter sessions (metadata + optional full-text grep).show_session.py , print a single session's conversation (user/assistant turns) in readable form.Both read directly from disk , no API calls, no auth. They resolve paths from $HOME so they work for any macOS user:
~/.claude/projects/*/\*.jsonl~/Library/Application Support/Claude/local-agent-mode-sessions/*/*/local_*/audit.jsonl (sibling local_*.json holds title/metadata)Start narrow, widen if needed. Prefer --grep for content recall; use metadata filters to scope.
scripts/find_sessions.py --grep "recruitee logo api" # content search
scripts/find_sessions.py --title "rippling" # title substring
scripts/find_sessions.py --cwd "Recruitee" # Code sessions under matching cwd
scripts/find_sessions.py --since 2026-03-01 --until 2026-03-31
scripts/find_sessions.py --kind cowork -n 30 # 30 most recent CoworkCombine freely. Output is a table by default; add --json for structured piping.
--grep PATTERN is a regex (case-insensitive). It searches message text inside every transcript and prints 1-2 matching snippets per session along with the session row. Use this when the user remembers a phrase or topic, not a title.
scripts/show_session.py <path-from-step-1> # full conversation
scripts/show_session.py <path> --grep "logo" # only turns mentioning "logo" (with ±1 surrounding turn)
scripts/show_session.py <path> --tail 20 # last 20 turnsThe script strips tool calls/results and renders user + assistant text only. Output is markdown-ish; pipe to a pager if long.
find_sessions.py flags:
--kind {code,cowork,all} , default all--since YYYY-MM-DD, --until YYYY-MM-DD , by last-activity mtime--title TEXT , substring, case-insensitive (Cowork uses the stored title; Code uses the first user message)--cwd TEXT , substring match against the working directory recorded in Code transcripts--grep PATTERN , regex across transcript body-n, --limit N , cap results (default 50, 0 = all)--snippets N , how many matching lines to show per session under --grep (default 2)--json , machine-readable output--grep with 2–3 alternative phrasings in parallel before narrowing..json sidecar written by the desktop app.find_sessions.py lists each transcript separately; that's usually what you want , the most recent one is the live thread.show_session.py --grep or --tail over the full file.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.