GeezerVison is showing github.com — Check for versions of macOS and Xcode that are unsupported for traced analysis by mbg · Pull Request #4221 · github/codeql-action
Conversation
mbg
commented
Oct 9, 2026
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
Traced analysis is unsupported on macOS 27 (or newer) or with Xcode 27 (or newer). This PR adds a check for traced analyses which checks whether the macOS version is < 27 and the Xcode version is < 27. The Xcode version check is only validated for GitHub-hosted runners in this PR and skipped on self-hosted runners (see #4278 for a follow-up).
If either is >= 27, then we report this issue to the user with a suitable diagnostic. I have also added a FF which controls whether this is just a warning or a fatal error which aborts the analysis.
Further, there is a new ToolsFeature for Swift which allows the CLI to indicate to us when it is ready to support swift on all platforms. Once the CLI reports that it supports this, we skip the macOS-only check for Swift.
There are two new FFs: one which controls whether the new checks are performed and one which controls whether a failing check is a fatal error or not.
Notes for reviewers
- We have to be careful about the checks in
checkRunnerSupportsTracedAnalysis with respect to determining whether an analysis is traced.
Risk assessment
For internal use only. Please select the risk level of this change:
- Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.
Which use cases does this change impact?
Workflow types:
- Advanced setup - Impacts users who have custom CodeQL workflows.
- Managed - Impacts users with
dynamic workflows (Default Setup, Code Quality, ...).
Products:
- Code Scanning - The changes impact analyses when
analysis-kinds: code-scanning.
- Code Quality - The changes impact analyses when
analysis-kinds: code-quality.
- Other first-party - The changes impact other first-party analyses.
Environments:
- Dotcom - Impacts CodeQL workflows on
github.com and/or GitHub Enterprise Cloud with Data Residency.
- GHES - Impacts CodeQL workflows on GitHub Enterprise Server.
How did/will you validate this change?
- Unit tests - I am depending on unit test coverage (i.e. tests in
.test.ts files).
- End-to-end tests - I am depending on PR checks (i.e. tests in
pr-checks).
If something goes wrong after this change is released, what are the mitigation and rollback strategies?
- Feature flags - All new or changed code paths can be fully disabled with corresponding feature flags.
How will you know if something goes wrong after this change is released?
- Telemetry - I rely on existing telemetry or have made changes to the telemetry.
- Dashboards - I will watch relevant dashboards for issues after the release. Consider whether this requires this change to be released at a particular time rather than as part of a regular release.
- Alerts - New or existing monitors will trip if something goes wrong with this change.
Are there any special considerations for merging or releasing this change?
- Special considerations - This change should only be merged once certain preconditions are met. Please provide details of those or link to this PR from an internal issue.
Merge / deployment checklist
- Confirm this change is backwards compatible with existing workflows.
- Consider adding a changelog entry for this change.
- Confirm the readme and docs have been updated if necessary.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
mbg
changed the title
Check for versions of macOS and Xcode that are unsupported for traced Swift analysis
Check for versions of macOS and Xcode that are unsupported for traced analysis
Oct 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to dig deeper into the robustness of this method of checking the Xcode version. For instance, my machine has Xcode installed, but xcodeVersion would report "Xcode is probably not installed" because /private/var/db/xcode_select_link is missing. Also, Xcode is installed at /Applications/Xcode.app on my machine so even if Xcode was found, so the check would report that the path does not contain the expected pattern and we'd fail to determine the version number. I'm running macOS 27, and perhaps the behaviour would be different on a previous OS version, but I think we need to consider the variance in how Xcode might be installed if we're going to ship this to self-hosted runners.
Would you be able to share some discussion on why you chose this method? For instance, given we only care about checking whether the major version is >= 27, I'm curious how the check in the PR weighs up against e.g. xcrun --sdk macosx --show-sdk-version.
It might also be helpful to ship this more incrementally, e.g. we could ship the macOS 27 check as is in one PR, and we could ship the Xcode check as is but for hosted runners only in another. We could also add telemetry to measure whether the detection mechanism works in production. For instance, it might be useful to record if a Swift analysis completes successfully but the detection mechanism says Xcode is not installed.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the offline discussion on this, and the follow up changes 🙏 Consider adding a changelog note for this, and also updating the PR description to mention e.g. the restriction to hosted runners.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
To avoid stray diagnostic files ending up in the working directory
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Swift still reaches generic macOS/Xcode checks despite advertising SwiftSupportsAllPlatforms, causing Swift-only analyses to fail incorrectly when both compatibility flags are enabled.
5 open issues
4 resolved since last review
2 files not reviewed
Review effort: Max
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Nov 3, 2026
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Labels
size/XXL
May be extremely hard to review
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
|