You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bot-token: set the git identity with GIT_AUTHOR_*/GIT_COMMITTER_* so a submodule checkout after it does not send Authorization twice #121
bot-token sets the bot's git identity by exporting GIT_CONFIG_GLOBAL=$RUNNER_TEMP/bot-token.gitconfig. A later actions/checkout with submodules: true writes its auth include.path "globally" under a temporary HOME, which it then discards; GIT_CONFIG_GLOBAL outranks HOME, so the include lands in bot-token.gitconfig and stays for the job. Each submodule also gets checkout's own includeIf to the same credentials file, so the next submodule fetch sends Authorization twice and GitHub answers 400 Duplicate header: "Authorization".
Seen live on 2026-10-14: marola's pointer-sync.yml (bot-token v0.11.0, then checkout with submodules) failed at fatal: Unable to fetch in submodule path 'marola-site': https://github.com/marola-dev/marola/actions/runs/38638524656. The log shows git config --global include.path /home/runner/work/_temp/git-credentials-….config written while GIT_CONFIG_GLOBAL pointed at bot-token.gitconfig. Reproduced locally: with GIT_CONFIG_GLOBAL=f HOME=tmp, git config --global include.path x writes to f and leaves tmp empty. Submodule pointers do not move until this is fixed.
Fix: export GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL to GITHUB_ENV instead of GIT_CONFIG_GLOBAL. No git config file changes, so checkout's HOME override works again, and nothing outlives the job on a self-hosted runner. Keep the name/email outputs. Update docs/4-reference_workflows.md (the GIT_CONFIG_GLOBAL sentence) and the CHANGELOG (v0.11.1).
Acceptance criteria
bot-token exports the four GIT_AUTHOR_*/GIT_COMMITTER_* variables and no longer sets GIT_CONFIG_GLOBAL
bot-token-test.yml's mints-scoped job checks the identity through a real commit's author and committer (not git config --global)
a new bot-token-test.yml job mints a token, then runs actions/checkout with submodules: true on a repo that has submodules, then fetches every submodule: red on v0.11.0's action, green after
Activity
brunogbv commentedon Oct 15, 2026
Live proof:
bot-token-teston #122,checkout-submodulesandmints-scopedgreen; after v0.11.1 reached marola,pointer-sync.ymlchecked out every submodule and opened #831 asmarola-pr-bot: https://github.com/marola-dev/marola/actions/runs/38648267678