Skip to content

No handling for fatal: could not fetch ... from promisor remote #2306

@jsoref

Description

@jsoref

I have a github workflow that runs on: pull_request; it uses actions/checkout (Download action repository 'actions/checkout@v5' (SHA:08c6903cd8c0fde910a37f88322edcfb5dd907a8) and I've configured it with debug logging:

      GIT_CURL_VERBOSE: True
      GIT_TRACE: True
      GIT_SSH_COMMAND: ssh -v -v -v

I used GitHub to edit a file on the branch which triggered a pull_request event which failed:

2025-11-14T17:10:25.3560801Z 17:10:25.348049 run-command.c:673       trace: run_command: git index-pack --stdin --fix-thin '--keep=fetch-pack 1943 on runnervmg1sw1' --promisor --pack_header=2,11023
2025-11-14T17:10:25.3565838Z 17:10:25.348078 run-command.c:765       trace: start_command: /usr/lib/git-core/git index-pack --stdin --fix-thin '--keep=fetch-pack 1943 on runnervmg1sw1' --promisor --pack_header=2,11023
2025-11-14T17:10:25.3571334Z 17:10:25.350074 git.c:502               trace: built-in: git index-pack --stdin --fix-thin '--keep=fetch-pack 1943 on runnervmg1sw1' --promisor --pack_header=2,11023
2025-11-14T17:10:25.5846003Z 17:10:25.579680 http.c:890              == Info: Connection #0 to host github.com left intact
2025-11-14T17:10:25.7976266Z From https://github.com/{OWNER}/{REPO}
2025-11-14T17:10:25.7984180Z  * [new branch]      ...
...
2025-11-14T17:10:25.8379809Z  * [new branch]      ...
2025-11-14T17:10:25.8384292Z 17:10:25.816340 run-command.c:673       trace: run_command: git maintenance run --auto --no-quiet --detach
2025-11-14T17:10:25.8390770Z 17:10:25.816461 run-command.c:765       trace: start_command: /usr/lib/git-core/git maintenance run --auto --no-quiet --detach
2025-11-14T17:10:25.8395653Z 17:10:25.818986 git.c:502               trace: built-in: git maintenance run --auto --no-quiet --detach
2025-11-14T17:10:25.8401517Z [command]/usr/bin/git branch --list --remote origin/main
2025-11-14T17:10:25.8404822Z 17:10:25.826308 git.c:502               trace: built-in: git branch --list --remote origin/main
2025-11-14T17:10:25.8407140Z   origin/main
2025-11-14T17:10:25.8410791Z [command]/usr/bin/git rev-parse refs/remotes/origin/main
2025-11-14T17:10:25.8414296Z 17:10:25.833821 git.c:502               trace: built-in: git rev-parse refs/remotes/origin/main
2025-11-14T17:10:25.8417395Z 86025ee73343ce5e9d776a2427899b0f49be410f
2025-11-14T17:10:25.8421719Z ##[endgroup]
2025-11-14T17:10:25.8424147Z ##[group]Determining the checkout info
2025-11-14T17:10:25.8426644Z ##[endgroup]
2025-11-14T17:10:25.8428342Z [command]/usr/bin/git sparse-checkout disable
2025-11-14T17:10:25.8432629Z 17:10:25.842755 git.c:502               trace: built-in: git sparse-checkout disable
2025-11-14T17:10:25.8467372Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig
2025-11-14T17:10:25.8494854Z 17:10:25.848987 git.c:502               trace: built-in: git config --local --unset-all extensions.worktreeConfig
2025-11-14T17:10:25.8505084Z ##[group]Checking out the ref
2025-11-14T17:10:25.8513724Z [command]/usr/bin/git checkout --progress --force -B main refs/remotes/origin/main
2025-11-14T17:10:25.8537505Z 17:10:25.853155 git.c:502               trace: built-in: git checkout --progress --force -B main refs/remotes/origin/main
2025-11-14T17:10:25.8549151Z 17:10:25.853820 run-command.c:673       trace: run_command: git -c fetch.negotiationAlgorithm=noop fetch origin --no-tags --no-write-fetch-head --recurse-submodules=no --filter=blob:none --stdin
2025-11-14T17:10:25.8561326Z 17:10:25.853870 run-command.c:765       trace: start_command: /usr/lib/git-core/git -c fetch.negotiationAlgorithm=noop fetch origin --no-tags --no-write-fetch-head --recurse-submodules=no --filter=blob:none --stdin
2025-11-14T17:10:25.8574083Z 17:10:25.855476 git.c:502               trace: built-in: git fetch origin --no-tags --no-write-fetch-head --recurse-submodules=no --filter=blob:none --stdin
2025-11-14T17:10:25.8587254Z 17:10:25.855938 run-command.c:673       trace: run_command: GIT_DIR=.git git remote-https origin https://github.com/{OWNER}/{REPO}
2025-11-14T17:10:25.8594132Z 17:10:25.856019 run-command.c:765       trace: start_command: /usr/lib/git-core/git remote-https origin https://github.com/{OWNER}/{REPO}
2025-11-14T17:10:25.8600166Z 17:10:25.857522 git.c:806               trace: exec: git-remote-https origin https://github.com/{OWNER}/{REPO}
2025-11-14T17:10:25.8605654Z 17:10:25.857628 run-command.c:673       trace: run_command: git-remote-https origin https://github.com/{OWNER}/{REPO}
2025-11-14T17:10:25.8612228Z 17:10:25.857692 run-command.c:765       trace: start_command: /usr/lib/git-core/git-remote-https origin https://github.com/{OWNER}/{REPO}
2025-11-14T17:10:25.8636002Z 17:10:25.863118 http.c:890              == Info: Couldn't find host github.com in the .netrc file; using defaults
2025-11-14T17:10:25.8663977Z 17:10:25.865983 http.c:890              == Info: Host github.com:443 was resolved.
2025-11-14T17:10:25.8666638Z 17:10:25.865993 http.c:890              == Info: IPv6: (none)
2025-11-14T17:10:25.8668338Z 17:10:25.865996 http.c:890              == Info: IPv4: 140.82.116.4
2025-11-14T17:10:25.8670322Z 17:10:25.866012 http.c:890              == Info:   Trying 140.82.116.4:443...
2025-11-14T17:10:25.8864718Z 17:10:25.884554 http.c:890              == Info: Connected to github.com (140.82.116.4) port 443
2025-11-14T17:10:25.9147885Z 17:10:25.913680 http.c:890              == Info: found 440 certificates in /etc/ssl/certs
2025-11-14T17:10:25.9151357Z 17:10:25.913751 http.c:890              == Info: GnuTLS ciphers: NORMAL:-ARCFOUR-128:-CTYPE-ALL:+CTYPE-X509:-VERS-SSL3.0
2025-11-14T17:10:25.9153730Z 17:10:25.913779 http.c:890              == Info: ALPN: curl offers h2,http/1.1
2025-11-14T17:10:25.9342508Z 17:10:25.933529 http.c:890              == Info: SSL connection using TLS1.3 / ECDHE_RSA_AES_128_GCM_SHA256
2025-11-14T17:10:25.9365475Z 17:10:25.936038 http.c:890              == Info:   server certificate verification OK
2025-11-14T17:10:25.9370389Z 17:10:25.936049 http.c:890              == Info:   server certificate status verification SKIPPED
2025-11-14T17:10:25.9374034Z 17:10:25.936147 http.c:890              == Info:   common name: github.com (matched)
2025-11-14T17:10:25.9376857Z 17:10:25.936155 http.c:890              == Info:   server certificate expiration date OK
2025-11-14T17:10:25.9379220Z 17:10:25.936160 http.c:890              == Info:   server certificate activation date OK
2025-11-14T17:10:25.9381277Z 17:10:25.936170 http.c:890              == Info:   certificate public key: EC/ECDSA
2025-11-14T17:10:25.9383163Z 17:10:25.936175 http.c:890              == Info:   certificate version: #3
2025-11-14T17:10:25.9384987Z 17:10:25.936186 http.c:890              == Info:   subject: CN=github.com
2025-11-14T17:10:25.9386998Z 17:10:25.936193 http.c:890              == Info:   start date: Wed, 05 Feb 2025 00:00:00 GMT
2025-11-14T17:10:25.9389186Z 17:10:25.936199 http.c:890              == Info:   expire date: Thu, 05 Feb 2026 23:59:59 GMT
2025-11-14T17:10:25.9392493Z 17:10:25.936225 http.c:890              == Info:   issuer: C=GB,ST=Greater Manchester,L=Salford,O=Sectigo Limited,CN=Sectigo ECC Domain Validation Secure Server CA
2025-11-14T17:10:25.9395106Z 17:10:25.936239 http.c:890              == Info: ALPN: server accepted h2
2025-11-14T17:10:25.9396752Z 17:10:25.936304 http.c:890              == Info: using HTTP/2
2025-11-14T17:10:25.9399873Z 17:10:25.936348 http.c:890              == Info: [HTTP/2] [1] OPENED stream for https://github.com/{OWNER}/{REPO}/info/refs?service=git-upload-pack
2025-11-14T17:10:25.9402493Z 17:10:25.936354 http.c:890              == Info: [HTTP/2] [1] [:method: GET]
2025-11-14T17:10:25.9404335Z 17:10:25.936358 http.c:890              == Info: [HTTP/2] [1] [:scheme: https]
2025-11-14T17:10:25.9406274Z 17:10:25.936361 http.c:890              == Info: [HTTP/2] [1] [:authority: github.com]
2025-11-14T17:10:25.9409354Z 17:10:25.936366 http.c:890              == Info: [HTTP/2] [1] [:path: /{OWNER}/{REPO}/info/refs?service=git-upload-pack]
2025-11-14T17:10:25.9412134Z 17:10:25.936370 http.c:890              == Info: [HTTP/2] [1] [user-agent: git/2.51.2 (github-actions-checkout)]
2025-11-14T17:10:25.9414220Z 17:10:25.936373 http.c:890              == Info: [HTTP/2] [1] [accept: */*]
2025-11-14T17:10:25.9416431Z 17:10:25.936377 http.c:890              == Info: [HTTP/2] [1] [accept-encoding: deflate, gzip, br, zstd]
2025-11-14T17:10:25.9418810Z 17:10:25.936381 http.c:890              == Info: [HTTP/2] [1] [authorization: basic <redacted>]
2025-11-14T17:10:25.9420934Z 17:10:25.936384 http.c:890              == Info: [HTTP/2] [1] [accept-language: C, *;q=0.9]
2025-11-14T17:10:25.9422897Z 17:10:25.936387 http.c:890              == Info: [HTTP/2] [1] [pragma: no-cache]
2025-11-14T17:10:25.9424850Z 17:10:25.936391 http.c:890              == Info: [HTTP/2] [1] [git-protocol: version=2]
2025-11-14T17:10:25.9426818Z 17:10:25.936424 http.c:837              => Send header, 0000000368 bytes (0x00000170)
2025-11-14T17:10:25.9429778Z 17:10:25.936430 http.c:849              => Send header: GET /{OWNER}/{REPO}/info/refs?service=git-upload-pack HTTP/2
2025-11-14T17:10:25.9432053Z 17:10:25.936433 http.c:849              => Send header: Host: github.com
2025-11-14T17:10:25.9434258Z 17:10:25.936436 http.c:849              => Send header: User-Agent: git/2.51.2 (github-actions-checkout)
2025-11-14T17:10:25.9436202Z 17:10:25.936439 http.c:849              => Send header: Accept: */*
2025-11-14T17:10:25.9438224Z 17:10:25.936442 http.c:849              => Send header: Accept-Encoding: deflate, gzip, br, zstd
2025-11-14T17:10:25.9440437Z 17:10:25.936445 http.c:849              => Send header: AUTHORIZATION: basic <redacted>
2025-11-14T17:10:25.9442403Z 17:10:25.936448 http.c:849              => Send header: Accept-Language: C, *;q=0.9
2025-11-14T17:10:25.9444222Z 17:10:25.936451 http.c:849              => Send header: Pragma: no-cache
2025-11-14T17:10:25.9446084Z 17:10:25.936454 http.c:849              => Send header: Git-Protocol: version=2
2025-11-14T17:10:25.9447689Z 17:10:25.936457 http.c:849              => Send header:
2025-11-14T17:10:26.0362078Z 17:10:26.033553 http.c:837              <= Recv header, 0000000013 bytes (0x0000000d)
2025-11-14T17:10:26.0367092Z 17:10:26.033577 http.c:849              <= Recv header: HTTP/2 401
2025-11-14T17:10:26.0371315Z 17:10:26.033585 http.c:837              <= Recv header, 0000000026 bytes (0x0000001a)
2025-11-14T17:10:26.0375126Z 17:10:26.033590 http.c:849              <= Recv header: server: GitHub-Babel/3.0
2025-11-14T17:10:26.0380225Z 17:10:26.033595 http.c:837              <= Recv header, 0000000054 bytes (0x00000036)
2025-11-14T17:10:26.0384356Z 17:10:26.033598 http.c:849              <= Recv header: content-security-policy: default-src 'none'; sandbox
2025-11-14T17:10:26.0388158Z 17:10:26.033603 http.c:837              <= Recv header, 0000000041 bytes (0x00000029)
2025-11-14T17:10:26.0392208Z 17:10:26.033606 http.c:849              <= Recv header: content-type: text/plain; charset=UTF-8
2025-11-14T17:10:26.0395776Z 17:10:26.033611 http.c:837              <= Recv header, 0000000040 bytes (0x00000028)
2025-11-14T17:10:26.0399677Z 17:10:26.033615 http.c:849              <= Recv header: www-authenticate: Basic realm="GitHub"
2025-11-14T17:10:26.0403233Z 17:10:26.033621 http.c:837              <= Recv header, 0000000020 bytes (0x00000014)
2025-11-14T17:10:26.0406400Z 17:10:26.033625 http.c:849              <= Recv header: content-length: 87
2025-11-14T17:10:26.0413120Z 17:10:26.033629 http.c:837              <= Recv header, 0000000037 bytes (0x00000025)
2025-11-14T17:10:26.0416625Z 17:10:26.033633 http.c:849              <= Recv header: date: Fri, 14 Nov 2025 17:10:25 GMT
2025-11-14T17:10:26.0420206Z 17:10:26.033638 http.c:837              <= Recv header, 0000000023 bytes (0x00000017)
2025-11-14T17:10:26.0423481Z 17:10:26.033641 http.c:849              <= Recv header: x-frame-options: DENY
2025-11-14T17:10:26.0427161Z 17:10:26.033646 http.c:837              <= Recv header, 0000000073 bytes (0x00000049)
2025-11-14T17:10:26.0432039Z 17:10:26.033649 http.c:849              <= Recv header: strict-transport-security: max-age=31536000; includeSubDomains; preload
2025-11-14T17:10:26.0436262Z 17:10:26.033653 http.c:837              <= Recv header, 0000000059 bytes (0x0000003b)
2025-11-14T17:10:26.0440682Z 17:10:26.033656 http.c:849              <= Recv header: x-github-request-id: B801:3AB10D:1C00D19:1C75F16:69176281
2025-11-14T17:10:26.0444531Z 17:10:26.033660 http.c:837              <= Recv header, 0000000002 bytes (0x00000002)
2025-11-14T17:10:26.0447244Z 17:10:26.033664 http.c:849              <= Recv header:
2025-11-14T17:10:26.0450619Z 17:10:26.033678 http.c:890              == Info: Connection #0 to host github.com left intact
2025-11-14T17:10:26.0487654Z ##[error]fatal: could not read Username for 'https://github.com': terminal prompts disabled
2025-11-14T17:10:26.1233818Z ##[error]fatal: could not fetch bd7c3f497fbc33b4f7b2e64162e2e262239939d2 from promisor remote
2025-11-14T17:10:26.1275817Z ##[error]The process '/usr/bin/git' failed with exit code 128

I think that what happened is that:

  1. github triggered a pull_request event which created a github workflow run
  2. some pieces of the commit were available in the repository
  3. not all of the pieces were available
  4. the workflow triggered a git-upload-pack request which asked the github server for bd7c3f497fbc33b4f7b2e64162e2e262239939d2 which failed
  5. the action died (no retries)

I have code which tries to debug things, but it doesn't know what to do here. And I'm not actually sure how to detect what went wrong since I don't have access to the logs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions