Reference

.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 .observatoryignore in any directory,
  • .git/info/observatoryignore for one checkout only,
  • ~/.claude/.observatoryignore for 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 reaches back

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