Show HN: RepoGuards – Claude Code hooks that refuse pushes into the wrong repo RepoGuards, formerly Grove and renamed in version 0.2.0, launched as a set of Claude Code hooks that block AI agents from pushing or committing into the wrong repository in multi-repo environments. The tool's scope_foreign_commits guard refuses blind `git commit -a` runs in a foreign directory and injects that directory's branch name and open files, while honor_ownership refuses edits to files claimed by another project via `.claude/owns.json`. RepoGuards requires git, Python 3.9 or later, and Claude Code on the PATH, and is installed via `claude plugin marketplace add` plus `tools/deploy.py`; the author states it is built for and tested only on Claude Code. English · עברית https://github.com/yybd/repo-guards/blob/main/README.he.md Formerly Grove. Renamed in 0.2.0 — see Upgrading from Grove upgrading-from-grove . The safety and orchestration layer for AI agents in multi-repo environments. An AI agent like Claude Code is a brilliant tool when operating within a single project folder Repository . However, in the real world, tasks cross boundaries: shipping a feature requires a code change App , a data schema update Hub , and editing a marketing page Web . The moment the agent "reaches out" to a foreign directory, it loses touch with reality. Because the git status command is limited to its current working directory, the agent might blindly overwrite another developer's open files, push code to the wrong branch, or perform a destructive blind commit. RepoGuards was built to solve exactly this. It is a set of guardrails that run inside the session, at the moment of the tool call: they detect the anomaly, refuse the two actions that cannot be undone, and hand the agent back the picture it was missing so it can correct itself. Built for Claude Code, and tested only there. The guards are Claude Code hooks: they read its hook protocol and its tool names Bash , Edit , Write , and close.py reads the journal those hooks write. The idea carries to any agent with a pre-tool hook; the code does not, yet. The system provides 3 critical solutions: - Blocking Blind Commits scope foreign commits : If the AI stands in directory A and attempts to run git commit -a in directory B, the system blocks it. Instead of a generic failure, it injects the true state of the foreign directory including the branch name and open files , instructing the AI to commit only specific files. - Honoring Boundaries honor ownership : If a file is claimed by another project via .claude/owns.json , the hook refuses to let the AI edit it, redirecting the agent to the proper location. The file's format, with an example, is in tools/README.md https://github.com/yybd/repo-guards/blob/main/tools/README.md and-ownership-is-declared-never-guessed . An agent updating 3 projects simultaneously leaves a trail of changes. Standard Git commands break down here. The script $REPO GUARDS/tools/close.py --commit reads which files this specific session wrote across every directory, and stages only those — never a sweep. What it claims is deliberately narrow: a path counts only if a writing tool of this session named it and it is still dirty, so a parallel session's work can never be swept into your commit. The cost of that choice is stated plainly under Known limits . The brain that tracks which projects exist on your machine, and which "Skill Tracks" each project is allowed to load. This prevents an agent in an iOS app from loading Android deployment commands. The system syncs perfectly with other skill libraries, such as the App Factory https://github.com/yybd/app-factory . Because RepoGuards manages your environment, it is usually the first product you install , sitting alongside your other projects typically under a