{"version":"2.1.280","anchor":"self-hosted-runner-session-scoped-git-config-for-lifecycle","canonical_anchor":"self-hosted-runner-session-scoped-git-config-for-lifecycle","heading":"Self-hosted runner's --configure-git gained session-scoped git hooks and hooksPath handling","tier":"use","area":"Self-Hosted Runner","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.280\/e\/self-hosted-runner-session-scoped-git-config-for-lifecycle","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.280","markdown":"### Self-hosted runner's --configure-git gained session-scoped git hooks and hooksPath handling\n\nThe self-hosted runner's --configure-git setup now writes session-scoped git hooks\/signing config, preserves an operator's existing hooksPath, and simplified how it picks the override.\n\n**What**\n\n- When `--configure-git` installs its own git hooks shim, it now checks whether the repo already has an operator-configured `hooksPath` and reports it back as `operatorHooksPath` instead of silently overwriting it.\n\n- Runner session setup gained a `--configure-git`-driven path that writes session-scoped git hooks and signing artifacts under a `hooks` subdirectory, pinning `core.hooksPath`, the gpg\/ssh programs, and `GIT_ALLOW_PROTOCOL` specifically for git invoked from lifecycle hooks, separate from the git used for the main checkout.\n\n- The helper that decides the `core.hooksPath` override for these session-scoped artifacts was simplified from a symlink-resolution routine to just returning the configured hooksPath or a `\/dev\/null` default.\n\n**Why**\n\nThis keeps an operator's own git hooks configuration intact while giving the runner's lifecycle hooks their own isolated, session-scoped git config.\n\n- Area: Self-Hosted Runner\n- Tier: Use it now\n- Useful: 2\/5\n- Signal: 1\/5"}