GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

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

@mbg mbg commented Oct 9, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

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.

All reactions
@github-actions github-actions Bot added the size/XL May be very hard to review label Oct 9, 2026
@mbg mbg mentioned this pull request Oct 9, 2026
Add FileSystem abstraction for testing #4222
Draft
@mbg
mbg changed the base branch from main to mbg/diagnostics/failed-sarif October 9, 2026 22:42
@mbg
mbg force-pushed the mbg/macos27/warn branch from b6de93b to 8baf1db Compare October 9, 2026 22:44
@mbg
mbg added this pull request to stack #4224 October 9, 2026 22:45
@mbg
mbg removed this pull request from stack #4224 October 12, 2026 11:00
@mbg
mbg force-pushed the mbg/macos27/warn branch from 8baf1db to b9e004d Compare October 12, 2026 13:48
@mbg
mbg added this pull request to stack #4227 October 12, 2026 13:49
@mbg
mbg force-pushed the mbg/macos27/warn branch 2 times, most recently from 1599deb to 0171ce3 Compare October 14, 2026 09:35
@mbg
mbg removed this pull request from stack #4227 October 16, 2026 16:16
@mbg
mbg added this pull request to stack #4250 October 16, 2026 16:20
@mbg 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
@mbg
mbg force-pushed the mbg/macos27/warn branch 5 times, most recently from bcaccd9 to dd2f5ad Compare October 19, 2026 11:45
@github-actions github-actions Bot added size/XXL May be extremely hard to review and removed size/XL May be very hard to review labels Oct 19, 2026
@mbg
mbg force-pushed the mbg/macos27/warn branch from b0c1139 to 87997d1 Compare October 20, 2026 16:07
henrymercer
henrymercer reviewed Oct 28, 2026
View reviewed changes

@henrymercer henrymercer left a comment

Copy link
Copy Markdown
Contributor

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.

All reactions
mbg added 3 commits October 29, 2026 16:30
@mbg
Skip checks on self-hosted runners
8cafec0
@mbg
Change log level of messages in xcodeVersion
019a5ca
@mbg
Add debug-level log messages when checks are skipped
3da9738
@mbg
mbg requested a review from henrymercer October 29, 2026 16:37
@mbg mbg mentioned this pull request Oct 29, 2026
Add xcrun-based fallback for Xcode version detection #4278
Merged
henrymercer
henrymercer reviewed Oct 29, 2026
View reviewed changes

@henrymercer henrymercer left a comment

Copy link
Copy Markdown
Contributor

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.

All reactions
Comment thread src/languages/traced.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/languages/traced.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/languages/traced.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/feature-flags.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread pr-checks/sync.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/languages/swift.test.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/platform.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/languages/traced.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/languages/traced.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/languages/traced.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

mbg added 8 commits October 30, 2026 10:52
@mbg
Improve comment/log message wording
d37c313
@mbg
Only skip Xcode check on self-hosted runners
239b078
@mbg
Set tempDir in all createTestConfig calls in traced.test.ts
b2bb71b
To avoid stray diagnostic files ending up in the working directory
@mbg
Rename FF to include "Abort" instead of "Skip"
5bdb913
@mbg
Remove if option for validation jobs
688c04a
@mbg
Use correct version constant in handleUnsupportedVersion baseMessage
251f480
@mbg
Fix assertions and features for tests
c6cc137
@mbg
Remove unnecessary lstatSync call
f583e03
@mbg
mbg requested review from henrymercer and a max review from Copilot October 30, 2026 11:30
Copilot started reviewing on behalf of mbg October 30, 2026 11:31
View session
Copilot AI reviewed Oct 30, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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
  • Medium severity Exclude Swift when the CLI supports all Swift platforms
  • Medium severity Apply Swift capability exemption to language selection
  • Low severity Add an unreleased change note for compatibility checks · New
  • Low severity Test disabled CheckUnsupportedTracedAnalysis behavior · New
  • Low severity Use a supported Darwin version to test self-hosted skipping · New
4 resolved since last review
  • Medium severity Enable both unsupported-analysis flags in exemption tests
  • Medium severity Strengthen regression test with flags and a traced language
  • Medium severity Parenthesize supplied conditions to preserve the exclusion
  • Medium severity Enable unsupported-analysis checking in the generated workflow
2 files not reviewed
  • .github/workflows/__unsupported-macos.yml: Excluded by your content exclusion settings
  • lib/entry-points.js: Excluded by your content exclusion settings

Review effort: Max

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/init-action.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/languages/traced.test.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/languages/traced.test.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

mbg added 3 commits October 30, 2026 12:56
@mbg
Add change note
3ecc7a9
@mbg
Fix Xcode skip on self-hosted runner test
b5b3ef7
@mbg
Fix checks if FF is disabled test using the wrong predicate
c56bb9b
henrymercer
henrymercer approved these changes Oct 30, 2026
View reviewed changes

@henrymercer henrymercer left a comment

Copy link
Copy Markdown
Contributor

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.

:shipit:

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mbg
mbg added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit b46c2ee Oct 30, 2026
230 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@mbg
mbg deleted the mbg/macos27/warn branch October 30, 2026 13:33
This was referenced Nov 3, 2026
Merge main into releases/v4 #4286
Merged
Merge releases/v4 into releases/v3 #4291
Merged
beer-sakthai pushed a commit to beer-sakthai/codeql-action that referenced this pull request Nov 11, 2026
@mbg
Merge pull request github#4262 from github/mbg/cherry-picks/macos-dep…
354d3a2
…recation

Minor improvements to prepare for github#4221
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments
@henrymercer henrymercer henrymercer approved these changes

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

Projects

None yet

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.

3 participants

@mbg @henrymercer
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.