Skip to main content
Your agent answers from the saved graph, not from the files on disk. If the graph is old, the answers are old. Open-source Graphify gives you two ways to refresh it without thinking about it: git hooks and a file watcher.
Want this handled for you? Hosted Graphify rebuilds the graph on every push to your default branch, with nothing to install. See Graphify vs Graphify CLI.

Pick a method

Git hooks

Refresh on every git event. Runs in the background after commits, branch switches, merges, pulls and rebases.

graphify watch

Refresh as you save. Rebuilds a few seconds after code files change.

Git hooks

Run this once in each repository, after you’ve built a graph:
It adds four hooks and a merge driver for graph.json: You don’t need to run graphify update . after git pull. The post-merge or post-rewrite hook does it for you.

Check that it’s working

graphify hook status should print:
If a line says out of date, run graphify hook install again. To see what a rebuild did, read ~/.cache/graphify-rebuild.log. A few things to know:
  • It runs in the background. Git returns straight away, so a query right after a commit or pull can still see the old graph for a moment. Output goes to ~/.cache/graphify-rebuild.log.
  • It needs a graph to exist. Build one first with /graphify . or graphify extract .. The branch, merge and rebase hooks do nothing until graphify-out/ exists.
  • It skips some moments on purpose. No rebuild runs mid-rebase, in a linked git worktree, or when GRAPHIFY_SKIP_HOOK=1 is set.
  • It keeps your own hooks. Graphify adds its block between markers and leaves the rest of the file alone. graphify hook uninstall removes only its own block.
  • Re-run it after moving Python. The hook remembers which Python ran hook install. If you reinstall or move that environment, run graphify hook install again.

graphify watch

The watcher needs the watch extra:
It waits until files stop changing for three seconds, then:
  • Code changed: rebuilds the code graph right away. No model is called.
  • A doc, PDF or image changed: writes a graphify-out/needs_update flag and tells you to run /graphify --update in your assistant. It does not call a model by itself.
  • A file was deleted: rebuilds, so the deleted file’s nodes drop out.
Stop it with Ctrl+C. The watcher only runs while that terminal is open, so hooks are the better default.

What stays manual

Hooks and the watcher refresh code. They never call a model, so changes to docs, PDFs and images wait for you:
Run graphify check-update . to see whether a doc refresh is pending.

Known limits

These are open issues in the Graphify CLI repository. We’ll update this page when they’re fixed.
If you built with graphify extract . --code-only, the next branch switch, merge or rebase rebuilds it with docs included, so it grows. The rebuild doesn’t remember the scope you chose. Until this is fixed, add docs you want kept out to .graphifyignore. Tracked in #4923.
After you delete a document and run /graphify --update, the next update can treat all your other docs as changed and run them through the semantic pass again. Cached results still save the model calls, but the run takes longer. Tracked in #4914.
If you stop a semantic extraction partway through a long document, the cache can mark that document as done, and later updates skip the part that never ran. If you interrupted a run, rebuild that file with graphify extract . --force. Tracked in #4943.

FAQ

Run graphify hook install once in the repository. From then on, git rebuilds the code graph after each commit, branch switch, merge, pull and rebase. With hosted Graphify, the graph rebuilds on every push and there’s nothing to install.
Not if you’ve run graphify hook install. A pull that merges fires post-merge, and git pull --rebase fires post-rewrite. Both rebuild the code graph in the background. Without hooks, run graphify update . yourself.
You can. Rebuilds take a per-repository lock and queue behind each other, so they don’t pile up. Most people only need hooks.
Set GRAPHIFY_SKIP_HOOK=1, for example GRAPHIFY_SKIP_HOOK=1 git pull. To remove them, run graphify hook uninstall.
No. Hooks and the watcher only re-read code, locally. Docs, PDFs and images refresh when you run /graphify . --update.

Next steps

Keep the graph current

Manual refreshes, ignore files and the --force flag.

Troubleshooting

Fixes for stale answers, missing nodes and hook problems.

Try it in Graphify

We build and host the graph for you. The Free plan (up to 3 repositories) needs no card. Pro and Teams start with a 14-day trial, card required.