Error: Check run status and conclusions can only be updated internally by GitHub Actions
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 :)
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).
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
statusfor existingcheck_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=completedthen, plugin required to updateconclusiontoo (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
namerather thancheck_idspawned new (same-named, different ID) entries
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.