{"version":"2.1.248","anchor":"directory-sync-only-runs-the-git-it-found-when-the-process-s","canonical_anchor":"directory-sync-only-runs-the-git-it-found-when-the-process-s","heading":"Directory sync only runs the git it found when the process started","tier":"notice","area":"Directory Sync","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.248\/e\/directory-sync-only-runs-the-git-it-found-when-the-process-s","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.248","markdown":"### Directory sync only runs the git it found when the process started\n\nDirectory sync pins git to the PATH from startup, so later PATH changes can't swap it.\n\n**What**\n\nSync now resolves git from the absolute directories on the PATH as it was when Claude Code launched, so a later change to PATH cannot make sync run a different git. If git is not found there, sync logs once, records a new telemetry event, and substitutes a deliberately nonexistent path so every sync git call fails rather than running something unexpected.\n\n**Details**\n\n- Message: \"[dirSync] git is not on the absolute entries of the PATH this process was started with; no sync git runs\".\n- Sentinel path: `\/nonexistent\/git-not-on-the-PATH-this-process-was-started-with`. Every sync git spawn goes through this resolver.\n- Sync git calls are also hardened: protocols disabled, no lazy fetch, no terminal prompt, explicit bare-repo safety, no submodule recursion.\n- The global and system git config passthrough now reads the captured startup environment rather than the live one, and always clears `GIT_CONFIG`.\n- No flag; live wherever directory sync runs.\n\n**Evidence**\n\n`\/nonexistent\/git-not-on-the-PATH-this-process-was-started-with`, `tengu_dir_sync_git_not_on_start_path`\n\n- Area: Directory Sync\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 3\/5"}