name: CodeQL macOS Critical Security on: workflow_dispatch: schedule: - cron: "0 8 * * 1" concurrency: group: codeql-macos-critical-security-${{ github.workflow }}-${{ github.event_name == 'workflow_dispatch' && format('manual-{0}', github.run_id) || format('ref-{0}', github.ref) }} cancel-in-progress: false env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" permissions: actions: read contents: read security-events: write jobs: macos: name: Critical Security (macOS) runs-on: blacksmith-12vcpu-macos-26 timeout-minutes: 45 steps: - name: Checkout uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: submodules: false - name: Select Xcode run: | set -euo pipefail sudo xcode-select -s /Applications/Xcode_26.6.app/Contents/Developer xcodebuild -version xcode_version="$(xcodebuild -version | awk 'NR == 1 { print $2 }')" if [[ "$xcode_version" != 26.6* ]]; then echo "error: expected Xcode 26.6, got $xcode_version" >&2 exit 1 fi swift --version - name: Initialize CodeQL uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 with: languages: swift build-mode: manual config-file: ./.github/codeql/codeql-macos-critical-security.yml - name: Build macOS for CodeQL run: swift build --package-path apps/macos --product OpenClaw - name: Analyze id: analyze uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 with: output: sarif-results upload: failure-only category: "/codeql-critical-security/macos" - name: Remove dependency build results env: SARIF_OUTPUT: sarif-results run: | set -euo pipefail shopt -s nullglob if [ ! -d "$SARIF_OUTPUT" ]; then echo "SARIF output directory not found: $SARIF_OUTPUT" >&2 exit 1 fi mkdir -p sarif-results-filtered files=("$SARIF_OUTPUT"/*.sarif) if [ "${#files[@]}" -eq 0 ]; then echo "No SARIF files found in $SARIF_OUTPUT" >&2 exit 1 fi for file in "${files[@]}"; do jq ' def in_dependency_build: ((.locations // []) | length > 0) and all(.locations[]; (.physicalLocation.artifactLocation.uri? // "") | test("^apps/macos/\\.build/")); .runs |= map(.results = ((.results // []) | map(select(in_dependency_build | not)))) ' "$file" > "sarif-results-filtered/$(basename "$file")" done - name: Upload filtered SARIF uses: github/codeql-action/upload-sarif@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 with: sarif_file: sarif-results-filtered category: "/codeql-critical-security/macos"