v2.8.4
Upgrading reparses every already-indexed file once. The index is a function of two things: your file content, and token-goat's extraction logic. Until now only the first was tracked, so a release that changed what gets extracted left unchanged files sitting on their old symbols indefinitely, and token-goat index reported them as skipped. Each file now records which version of the extraction logic produced its symbols. The first token-goat index run after upgrading takes noticeably longer than usual; later runs skip unchanged files as before. This release changes extraction for Zig, Lua, Scala, Kotlin, C#, TOML, SQL, R, GraphQL, Makefiles and .env files, so that reparse is not cosmetic.
Security
- Text recovered from an image is now always marked as untrusted, rather than only when it matched an injection pattern. OCR is the one extraction path where nobody can see what the content says without decoding it, so the marking is now unconditional on both the automatic image-shrink path and the
token-goat image-textcommand. - The OCR language model is now fetched from an explicitly versioned URL and verified against a recorded SHA-256 before use. The previous default URL followed whatever was published latest, with no checksum and no lockfile entry that would notice a change.
- New socket.yml recording which supply-chain alerts are noise and which are known.
Highlights
token-goat session-audit: a new command reporting where the tokens of every local session actually went, including a per-attachment-kind census, hook output, subagent spawn-prefix carriage and the Read interception rate.- Image shrinking now works on Copilot CLI and OpenClaw.
- Hooks carry W3C Trace Context, so token-goat's work lines up with the rest of a traced session.
- Harness fixes across Gemini CLI, Qwen Code, opencode, Grok, Kimi, pi and OpenClaw, several of which had whole mechanisms silently unreachable.
- A long list of indexing fixes: declarations that were dropped entirely, symbol spans that ran on past their own closing brace, and files with Windows line endings that had every code fence ignored.
- A long list of accounting fixes, so a reported saving matches the unit you are actually billed in.
The full list is in CHANGELOG.md.