checks-action icon indicating copy to clipboard operation
checks-action copied to clipboard

Error: Check run status and conclusions can only be updated internally by GitHub Actions

Open jimklimov opened this issue 2 months ago • 3 comments

https://github.blog/changelog/2025-02-12-notice-of-upcoming-deprecations-and-breaking-changes-for-github-actions/#changes-to-check-run-status-modification

Trying to get this action running, but it seems this forces changes of either status or conclusion, and since 2025-03-31 may not do so. Is there anything to fix/work around the situation?

Thanks in advance, Jim :)

jimklimov avatar Nov 11 '25 08:11 jimklimov

Hi @jimklimov,

Can you give more details on what you are trying to do?

I wasn't aware of this GitHub change however it doesn't seem to be affecting this action (see https://github.com/LouisBrunner/checks-action/actions/runs/19292868260/job/55167520985?pr=1).

LouisBrunner avatar Nov 12 '25 09:11 LouisBrunner

I've moved on in my project to try direct cURL posts, so don't have the branch handy with respective commits, so will to to reproduce from what the local reflog remembers :)

Overall, for context: my quest was that I have a workflow which prepares and uploads an artifact, and I wanted to make its URL known (ideally clickable as the "detail" or title of the GitHub Checks entry - something I casually see with checks made by Jenkins, OBS, etc.)

Due to the bumps I've made along the way, currently GitHub Checks may not modify the details_url (now only dedicated registered GH Apps may), so my next best shot was to try to edit the entry (one workflow, one job, one line) - also failed, so ultimately I settled on making an additional entry at the end of the build. As a mid-way I tried to make a new placeholder entry ("Link will appear here") early in the build, and then update it when the artifact appears - but this also did not go far.

I admit this particular area was new to me so there's a fair amount of blundering in the dark, and learning.

Some failures I did encounter when trying to use your action:

  • https://github.com/jimklimov/nut/commit/b1cd6001c => https://github.com/jimklimov/nut/actions/runs/19258932529/job/55059045612 - tried to update status for existing check_id, forbidden now:
Run LouisBrunner/[email protected]
  with:
    token: ***
    check_id: 55059045612
    status: in_progress
    details_url: http://localhost
    output: { "text_description": "Dist and Docs tarballs will be linked here after the `make dist` job completes", "summary": "in_progress"}
  env:
    check_id: 55059045612
Error: Check run status and conclusions can only be updated internally by GitHub Actions. Please see https://github.blog/changelog/2025-02-12-notice-of-upcoming-deprecations-and-breaking-changes-for-github-actions/#changes-to-check-run-status-modification
  • https://github.com/jimklimov/nut/commit/2a77542c5 => https://github.com/jimklimov/nut/actions/runs/19258972111/job/55059173628 - tried to set status=completed then, plugin required to update conclusion too (I think cURL posts do too):
Run LouisBrunner/[email protected]
  with:
    token: ***
    check_id: 55059173628
    details_url: http://localhost
    output: { "text_description": "Dist and Docs tarballs will be linked here after the `make dist` job completes", "summary": "in_progress"}
    status: completed
  env:
    check_id: 55059173628
Error: 'conclusion' is required when 'status' is 'completed'
  • https://github.com/jimklimov/nut/commit/c6f9d5a2c => https://github.com/jimklimov/nut/actions/runs/19259008336/job/55059282072 - added the conclusion, back to round one:
Run LouisBrunner/[email protected]
  with:
    token: ***
    check_id: 55059282072
    conclusion: success
    details_url: http://localhost
    output: { "text_description": "Dist and Docs tarballs will be linked here after the `make dist` job completes", "summary": "in_progress"}
    status: completed
  env:
    check_id: 55059282072
Error: Check run status and conclusions can only be updated internally by GitHub Actions. Please see https://github.blog/changelog/2025-02-12-notice-of-upcoming-deprecations-and-breaking-changes-for-github-actions/#changes-to-check-run-status-modification
  • https://github.com/jimklimov/nut/actions/runs/19269538532/job/55093875454 edits by name rather than check_id spawned new (same-named, different ID) entries

jimklimov avatar Nov 12 '25 20:11 jimklimov

Ah, I think I see. If I understand correctly, you were creating the initial check with another action then using checks-action to update it? I have never tried it that way so I imagine that's why I never encountered this problem. I am not sure why creating it with actions/github-script makes it non-updatable but with curl is fine, some kind of internal flag probably?

This is what I use in the CI/showcase:

  test_with_init:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - uses: ./
      id: init
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        name: Test With Init (fails)
        status: in_progress
    - run: sleep 30
    - uses: ./
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        check_id: ${{ steps.init.outputs.check_id }}
        status: completed
        output: |
          {"summary":"Some warnings in README.md"}
        conclusion: failure

In case you want to give it a go, it should work pretty much out-of-the-box.

Regarding the limitation of status and conclusion, it is a restriction from the GitHub API, yes.

LouisBrunner avatar Nov 12 '25 22:11 LouisBrunner