.observatoryignore
An .observatoryignore rule keeps matches out of capture; this page covers how stored records are swept.
Not every captured edit is worth reviewing: lockfiles, dist/, snapshots, generated clients. A .observatoryignore says which. It's the one file in the product where a typo costs data rather than visibility β so it's worth understanding exactly.
Syntax and nesting
It is .gitignore syntax β the same patterns, the same ! negations, the same "last matching rule wins" β and it nests the same way, with three tiers in git's own precedence order:
- the committed
.observatoryignorein any directory, .git/info/observatoryignorefor one checkout only,~/.claude/.observatoryignorefor rules that follow you everywhere.
One mode: never recorded
It has one mode: a path that matches is never recorded β not captured, so not listed, not counted, and not revertible, because there is nothing to revert.
A rule you add later also reaches back: the edits it now covers are dropped from the store on the next capture, or when you press Refresh in the terminal app or either editor, and the count is reported. This is why a typo here costs data β a too-broad pattern silently drops history.
It explains itself
Which is why it's introspectable. oak ignore --check <path> names the rule that decided, its file and its line, and takes git check-ignore's own flags and exit codes. The bare verb additionally reports any rule that can never fire β the gitignore trap git's own tooling leaves you to work out.
oak ignore --check src/generated/client.ts
oak ignore # report dead rules that can never match