The agent's git now goes through Bandicot
In a folder that keeps versions, the agent's git status, log, add and commit are handled by Bandicot, and every other git command runs in the git on your Mac.
When the agent runs git in a folder that keeps versions, the command now reaches Bandicot first. Bandicot answers the ones it can answer exactly, such as status, log, show, branch and tag, and the changed-files and line-count forms of diff. It prints the same text git prints, so the agent reads what it always read.
A few changes are made by Bandicot itself: add, commit, creating a branch or tag, switching to a new branch, and restore --staged. The commit is the same commit git would have made, with the same files, the same author and the same message, and git finds nothing wrong with the repository afterwards.
Anything uncertain is left to git
Bandicot only steps in when it is sure the result is exactly git's. A hook, an alias, a setting such as autocrlf, a merge or rebase in progress, a patch to print, a push, a pull, a clone or any option it does not know goes to the git installed on your Mac, with the same arguments and the same exit status. If there is no git on the Mac, the commands Bandicot can answer still work and the others say plainly that git is not installed.
It changes nothing outside the agent's shell. Your own terminal, your apps and your git are as they were.
Every command is written down
Each git command the agent runs in a session is now recorded in Versions, with the commit it made when it made one, whether Bandicot or git ran it. The note sits beside the version that holds those files, so the history of the files and the history of git point at each other.