Skip to content

Reject bundled agent runtimes from app artifacts - #6971

Closed
austinywang wants to merge 16 commits into
mainfrom
issue-5674-bundled-bun-1-3-14-segfaults-use-after-free-i
Closed

austinywang wants to merge 16 commits into
mainfrom
issue-5674-bundled-bun-1-3-14-segfaults-use-after-free-i

Conversation

@austinywang

@austinywang austinywang commented Jun 26, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #5674

Summary

  • add a regression guard for bundled provider/Bun runtimes in cmux app artifacts
  • verify Release, nightly, and release workflow app bundles do not ship stale provider executables or Bun runtimes
  • close the v0.64.14 bundled-runtime regression path while upstream Bun 1.3.14 remains the latest tagged release

Tests

  • ./tests/test_bundled_provider_runtime_guard.sh
  • python3 tests/test_ci_change_areas.py

Note: no local dev build or reload was run per issue instructions.

Summary by CodeRabbit

  • Bug Fixes
    • Strengthened CI, nightly, and release validations to ensure published cmux.app bundles do not include bundled agent runtimes.
    • Added checks that scan Contents/Resources/bin for unexpected executables/symlinks, missing/exact wrapper matches, and embedded runtime signature indicators.
  • Tests
    • Added a regression test that verifies the bundled-runtime guard accepts valid bundles and fails on multiple rejection scenarios, including asserting the exact offending Contents/Resources/bin/... path.

@vercel

vercel Bot commented Jun 26, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Jul 5, 2026 4:08am
cmux-staging Building Building Preview, Comment Jul 5, 2026 4:08am

@coderabbitai

coderabbitai Bot commented Jun 26, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1ac994b0-9820-4356-88e6-04b095078a14

📥 Commits

Reviewing files that changed from the base of the PR and between fb93e35 and 4086767.

📒 Files selected for processing (3)
  • .github/workflows/nightly.yml
  • scripts/verify-no-bundled-agent-runtimes.sh
  • tests/test_bundled_provider_runtime_guard.sh

📝 Walkthrough

Walkthrough

Adds a Bash verifier for bundled runtimes in cmux.app, regression tests for accepted and rejected bundle contents, and macOS workflow steps that run the verifier before existing release and build checks.

Changes

Bundled runtime verification

Layer / File(s) Summary
Verifier script
scripts/verify-no-bundled-agent-runtimes.sh
Adds a shell verifier that scans a cmux.app bundle for unexpected executables and Bun standalone runtime signatures.
Guard tests
tests/test_bundled_provider_runtime_guard.sh
Adds bash tests for a clean app, forbidden executable names, non-executable entries, a symlinked binary, and a Bun standalone runtime signature.
Workflow wiring
.github/workflows/ci.yml, .github/workflows/nightly.yml, .github/workflows/release.yml
Runs the new verifier from CI guard, nightly, and release macOS workflow steps before existing binary validation checks.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Related issue: #5674

Suggested reviewers: lawrencecchen

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: blocking bundled runtimes from app artifacts.
Description check ✅ Passed The description covers the change and testing, but it omits several template sections like Demo Video, Review Trigger, and Checklist.
Linked Issues check ✅ Passed The change addresses the issue by preventing bundled Bun/runtime artifacts from shipping, which mitigates the crash path described in #5674.
Out of Scope Changes check ✅ Passed The added script, tests, and workflow checks all support the bundled-runtime guard and do not introduce unrelated scope.
Cmux Swift Actor Isolation ✅ Passed PASS: Diff only touches workflows/scripts/tests; no Swift files or isolation-sensitive declarations were added or modified, so no actor-isolation regression.
Cmux Swift Blocking Runtime ✅ Passed No production Swift files were changed; the diff only adds a shell runtime guard, so the Swift blocking-runtime rule is not applicable.
Cmux Browser Automation Off-Main ✅ Passed Diff only updates unrelated submodule files and workflow/runtime-guard scripts; no browser.* commands, policy router, or WebKit/AppKit off-main paths changed.
Cmux Expensive Synchronous Load ✅ Passed The PR only changes a shell verifier and workflow/test wiring; no Swift files or main-actor/interactive agent-load paths were added or moved.
Cmux Cache Substitution Correctness ✅ Passed PR only changes a Bash verification script; no Swift/TS/JS cache-substitution path is touched, so the rule is not applicable.
Cmux No Hacky Sleeps ✅ Passed PASS: The added shell scripts and workflow calls contain no fixed sleeps, polling, or timing hacks; YAML waits are existing CI orchestration and out of scope.
Cmux Algorithmic Complexity ✅ Passed The new shell verifier scans a fixed small bin allowlist and bundle contents, and the other changes are CI/tests, so no scalable-collection complexity regression is introduced.
Cmux Swift Concurrency ✅ Passed The commit diff touches only a shell script; no Swift files or Swift concurrency patterns are introduced or expanded.
Cmux Swift @Concurrent ✅ Passed PR diff changes only workflows and shell scripts; no Swift files are touched, so the Swift concurrency rule is not applicable.
Cmux Swift File And Package Boundaries ✅ Passed PR diff only touches workflows and shell scripts; no Swift files or package-boundary changes are present.
Cmux Swiftpm Lockfiles ✅ Passed PR only changes workflows/scripts/tests; it doesn't modify any cmux-owned .gitignore, Package.swift, Xcode package references, or Package.resolved files.
Cmux Swift Logging ✅ Passed The diff only changes a Bash verifier script; no Swift/runtime code or logging APIs were added or materially changed.
Cmux User-Facing Error Privacy ✅ Passed Added error text is confined to CI/test scripts and workflows, which the rule explicitly allows; no end-user-facing copy was added.
Cmux Full Internationalization ✅ Passed PASS: The PR only adds CI/workflow/test and shell-script guards; no Swift UI, web UI, xcstrings, or web/messages files were touched.
Cmux Swiftui State Layout ✅ Passed Diff only touches a bash runtime-verifier script; no SwiftUI views, state objects, GeometryReader, lazy-row stores, or render-time mutations are introduced.
Cmux Architecture Rethink ✅ Passed PASS: the PR diff only touches workflows, a shell verifier, and its test; no Swift files or architecture changes are present.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed No Swift files or window-related code changed; the PR only touches workflows and shell scripts/tests.
Cmux Source Artifacts ✅ Passed Changed paths are workflows, shell scripts, and tests—types the rule explicitly allows; no artifact/scratch paths are introduced.
Cmux No Test Or Debug Seam In Production Source ✅ Passed PR diff touches workflows/tests/scripts only; no Swift files under Sources/ were changed, so the production seam rule is not triggered.
Cmux No Ambient Global State ✅ Passed Only Swift change is inside TabItemView.swift; it adds layout tweaks within an existing View, with no new top-level funcs, vars, or singletons.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue-5674-bundled-bun-1-3-14-segfaults-use-after-free-i

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@austinywang

Copy link
Copy Markdown
Contributor Author

@codex review
@coderabbitai review
@greptile-apps review
@cubic-dev-ai review

@cubic-dev-ai

cubic-dev-ai Bot commented Jun 26, 2026

Copy link
Copy Markdown

@codex review
@coderabbitai review
@greptile-apps review
@cubic-dev-ai review

@austinywang I can't start this review because your workspace has reached its free monthly review limit. cubic has reviewed 241,260 of the 240,000 allowed lines of code this month. Reviews resume on 1 July 2026 (in 5 days). Paid plans include much higher monthly review limits. Upgrade now to resume reviews.

To help optimise your usage, you can tune cubic to get the most out of your usage limits:

Learn more →

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create a Codex account and connect to github.

@coderabbitai

coderabbitai Bot commented Jun 26, 2026 •

Copy link
Copy Markdown

@austinywang I'll review the changes now.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@greptile-apps

greptile-apps Bot commented Jun 26, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds a verify-no-bundled-agent-runtimes.sh guard that checks every file and symlink in Contents/Resources/bin against a name allowlist and runs strings -a to detect embedded Bun standalone signatures, then wires the guard into CI, nightly, and release workflows. A companion regression test exercises all rejection paths end-to-end, including the Bun signature and symlink cases that were previously untested.

  • New verifier script: name-allowlist check, strings -a Bun-signature scan, and byte-for-byte grok wrapper verification; symlinks are found via -type f -o -type l and also fed through the Bun scan.
  • Test coverage: eight test fixtures cover the good-app path (all 8 allowlisted names), every forbidden name in the loop, non-executable-forbidden, non-executable-allowed, symlinked forbidden binary, and two Bun-signature cases (small and large file).
  • Workflow hooks: CI gets a test step plus a Release artifact check; the release workflow gains an unconditional check at the top of its existing artifact-validation step; nightly gains a step alongside the existing architecture/memory guards.

Confidence Score: 5/5

Safe to merge; all changes are additive CI guard scripts and tests with no production Swift or runtime code modified.

The verifier script is logically sound, covering forbidden names, Bun-signature detection, and byte-for-byte grok verification. The test suite closes all previously flagged gaps. The only observation is a minor quality gap in the symlink executable check with no realistic impact on actual builds.

No files require special attention.

Important Files Changed

Filename Overview
scripts/verify-no-bundled-agent-runtimes.sh New verifier script: allowlist-based name check plus strings -a Bun-signature scan; handles symlinks via -type l; grok verified byte-for-byte against the checked-in wrapper.
tests/test_bundled_provider_runtime_guard.sh Comprehensive regression test covering all 8 allowlisted names, forbidden-name loop, non-executable cases, symlinked forbidden binary, and two Bun-signature fixtures.
.github/workflows/ci.yml Adds the guard test step and wires verify-no-bundled-agent-runtimes.sh into the Release artifact validation step.
.github/workflows/release.yml Adds the verifier as the first check inside the existing guarded artifact-validation step.
.github/workflows/nightly.yml Adds the verifier step with the same condition as the existing architecture/memory checks; condition discussed separately.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[CI / Nightly / Release Workflow] --> B[Build cmux.app universal bundle]
    B --> C[verify-no-bundled-agent-runtimes.sh]
    C --> D{For each file/symlink in Contents/Resources/bin}
    D --> E{Name in allowlist?}
    E -- No --> F[FAIL: unexpected bundled bin entry]
    E -- Yes --> G{Is executable?}
    G -- No --> H[FAIL: allowed bin entry not executable]
    G -- Yes --> I{Name == grok?}
    I -- Yes --> J{Matches checked-in Resources/bin/grok?}
    J -- No --> K[FAIL: grok wrapper mismatch]
    J -- Yes --> L{strings -a: Bun signature?}
    I -- No --> L
    L -- Yes --> M[FAIL: Bun standalone runtime signature]
    L -- No --> D
    D -- All files pass --> N[PASS: verified no bundled provider runtimes]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[CI / Nightly / Release Workflow] --> B[Build cmux.app universal bundle]
    B --> C[verify-no-bundled-agent-runtimes.sh]
    C --> D{For each file/symlink in Contents/Resources/bin}
    D --> E{Name in allowlist?}
    E -- No --> F[FAIL: unexpected bundled bin entry]
    E -- Yes --> G{Is executable?}
    G -- No --> H[FAIL: allowed bin entry not executable]
    G -- Yes --> I{Name == grok?}
    I -- Yes --> J{Matches checked-in Resources/bin/grok?}
    J -- No --> K[FAIL: grok wrapper mismatch]
    J -- Yes --> L{strings -a: Bun signature?}
    I -- No --> L
    L -- Yes --> M[FAIL: Bun standalone runtime signature]
    L -- No --> D
    D -- All files pass --> N[PASS: verified no bundled provider runtimes]
Loading

Reviews (14): Last reviewed commit: "Handle Bun signature scan SIGPIPE" | Re-trigger Greptile

Comment thread tests/test_bundled_provider_runtime_guard.sh
Comment thread scripts/verify-no-bundled-agent-runtimes.sh Outdated
Comment thread scripts/verify-no-bundled-agent-runtimes.sh Outdated
@greptile-apps

greptile-apps Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds a regression guard (scripts/verify-no-bundled-agent-runtimes.sh) that fails the build if Contents/Resources/bin contains unlisted executables or any binary with Bun standalone runtime signatures, and wires it into CI, Nightly, and Release workflows before artifact publishing.

  • The allowlist (cmux, ghostty, cmux-claude-wrapper, grok, open, start-cmux-profiling, submit-cmux-profile) matches the confirmed set of wrapper scripts actually shipped in Resources/bin; grok and open are cmux-owned hook-injection wrappers, not provider runtimes.
  • The workflow placement in all three YAML files is correct: CI runs the verifier unconditionally in the Release slice validation step; Nightly attaches it to the build-gated step whose condition already prevents publishing when the build is skipped; Release runs it before the binary architecture checks.
  • The companion test exercises the unexpected-binary-name rejection path but does not cover the looks_like_bun_standalone detection branch at all, leaving that code path completely untested.

Confidence Score: 4/5

Safe to merge; the verifier and workflow placement are correct and improve artifact hygiene across all three release pipelines.

The core verifier logic, allowlist, and workflow wiring are all sound. The only gap is that the test never writes Bun marker strings into an allowed binary, so the looks_like_bun_standalone branch has zero test coverage. If that detection silently broke, the verifier would miss a Bun runtime disguised under an allowed name. The fix is a straightforward additional test case.

tests/test_bundled_provider_runtime_guard.sh — needs a test case that triggers the Bun standalone signature detection path.

Important Files Changed

Filename Overview
scripts/verify-no-bundled-agent-runtimes.sh New verifier script: rejects unlisted executables and checks allowed binaries for Bun standalone signatures via strings grep; logic and allowlist are correct but the looks_like_bun_standalone path is never exercised by the companion test.
tests/test_bundled_provider_runtime_guard.sh Regression test covering unexpected-binary-name rejection, but the Bun standalone signature detection branch (looks_like_bun_standalone) is never triggered — no test case writes Bun marker strings into an allowed binary.
.github/workflows/ci.yml Adds the verifier test to the CI unit-test suite and runs the verifier unconditionally in the Release artifact slice validation step; placement is correct.
.github/workflows/nightly.yml Adds verifier inside the existing step guarded by `should_publish != true
.github/workflows/release.yml Adds verifier at the top of the Release artifact slice validation step, unconditionally (modulo the existing guard_release_assets skip gate); placement is correct and runs before binary slicing checks.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[find BIN_DIR executables] --> B{is_allowed_binary_name?}
    B -- No --> C[violation: unexpected executable]
    C --> G[continue to next file]
    B -- Yes --> D{looks_like_bun_standalone?}
    D -- Yes --> E[violation: Bun standalone signature]
    D -- No --> F[file is clean]
    E --> H[next file]
    F --> H
    H --> B

    subgraph TEST_COVERAGE["Test Coverage"]
        TC1["✅ Tested: unexpected binary name\n(claude, opencode, codex, pi, bun, bunx)"]
        TC2["❌ NOT tested: Bun signature\nin allowed binary name\n(e.g. cmux with StandaloneExecutable strings)"]
    end

    C -.->|covered| TC1
    E -.->|not covered| TC2
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[find BIN_DIR executables] --> B{is_allowed_binary_name?}
    B -- No --> C[violation: unexpected executable]
    C --> G[continue to next file]
    B -- Yes --> D{looks_like_bun_standalone?}
    D -- Yes --> E[violation: Bun standalone signature]
    D -- No --> F[file is clean]
    E --> H[next file]
    F --> H
    H --> B

    subgraph TEST_COVERAGE["Test Coverage"]
        TC1["✅ Tested: unexpected binary name\n(claude, opencode, codex, pi, bun, bunx)"]
        TC2["❌ NOT tested: Bun signature\nin allowed binary name\n(e.g. cmux with StandaloneExecutable strings)"]
    end

    C -.->|covered| TC1
    E -.->|not covered| TC2
Loading

Reviews (2): Last reviewed commit: "Address bundled runtime guard review" | Re-trigger Greptile

Comment thread tests/test_bundled_provider_runtime_guard.sh
@greptile-apps

greptile-apps Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR introduces a regression guard that blocks bundled provider executables and Bun standalone runtimes from shipping inside cmux.app/Contents/Resources/bin, fixing issue #5674. The verifier runs in CI, nightly, and release workflows immediately before existing artifact-slice checks.

  • scripts/verify-no-bundled-agent-runtimes.sh checks every executable in the bin directory against a name allowlist and then runs a Bun signature scan (strings | grep) on allowed names; any violation exits non-zero with a named offending path.
  • tests/test_bundled_provider_runtime_guard.sh wires the verifier into CI with mock app fixtures that cover the name-based rejection path for six forbidden executables, but does not exercise the Bun signature detection branch or all three remaining allowlisted names.

Confidence Score: 4/5

Safe to merge; the guard correctly blocks unlisted executables in all three workflow targets and introduces no changes to production Swift or app behavior.

The verifier and CI integration work correctly for the primary name-allowlist check, but the test never calls looks_like_bun_standalone, so the Bun signature detection path is entirely unvalidated. Additionally, strings without -a on macOS may silently skip non-standard Mach-O sections where a Bun binary could embed its markers.

tests/test_bundled_provider_runtime_guard.sh and scripts/verify-no-bundled-agent-runtimes.sh warrant a second look — the test coverage of the Bun detection path and the strings -a flag are the two points worth addressing before the guard is relied on in production releases.

Important Files Changed

Filename Overview
scripts/verify-no-bundled-agent-runtimes.sh New verifier script using a name allowlist + Bun signature check; the strings call without -a may miss signatures in non-default Mach-O sections on macOS.
tests/test_bundled_provider_runtime_guard.sh Test only exercises the name-based allowlist check; the Bun signature detection path is never called, and three allowlisted names (open, start-cmux-profiling, submit-cmux-profile) are missing from the good-app fixture.
.github/workflows/ci.yml Wires the new guard test into CI pre-build validation and adds the verifier to the Release artifact slices step; placement and conditionals are consistent with existing patterns.
.github/workflows/nightly.yml Adds the verifier inside the existing conditional step; the step is skipped precisely when the nightly publish is also skipped, so no verification gap is introduced.
.github/workflows/release.yml Adds the verifier at the top of the release artifact validation step behind the existing skip_all guard; consistent with the surrounding pattern.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[CI / Nightly / Release workflow] --> B[Build cmux.app universal bundle]
    B --> C[verify-no-bundled-agent-runtimes.sh]
    C --> D{For each executable in bin dir}
    D --> E{Name in allowlist?}
    E -- No --> F[FAIL: unexpected executable]
    E -- Yes --> G{Bun standalone signature?}
    G -- Yes --> H[FAIL: Bun runtime detected]
    G -- No --> D
    D -- All pass --> I[PASS: verified no bundled runtimes]
    I --> J[Continue artifact validation]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[CI / Nightly / Release workflow] --> B[Build cmux.app universal bundle]
    B --> C[verify-no-bundled-agent-runtimes.sh]
    C --> D{For each executable in bin dir}
    D --> E{Name in allowlist?}
    E -- No --> F[FAIL: unexpected executable]
    E -- Yes --> G{Bun standalone signature?}
    G -- Yes --> H[FAIL: Bun runtime detected]
    G -- No --> D
    D -- All pass --> I[PASS: verified no bundled runtimes]
    I --> J[Continue artifact validation]
Loading

Reviews (3): Last reviewed commit: "Address bundled runtime guard review" | Re-trigger Greptile

Comment thread tests/test_bundled_provider_runtime_guard.sh
Comment thread tests/test_bundled_provider_runtime_guard.sh
Comment thread scripts/verify-no-bundled-agent-runtimes.sh

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/verify-no-bundled-agent-runtimes.sh`:
- Around line 56-68: The bundled-runtime check is skipping non-executable
regular files, which lets a copied bun/bunx binary or an allowlisted file like
cmux pass if packaging strips the execute bit. Update
verify-no-bundled-agent-runtimes.sh so the scan in the while/read loop and
looks_like_bun_standalone path checks every file and symlink under BIN_DIR
regardless of mode, then add a separate permission failure for allowlisted
entries that are expected to be executable. Use is_allowed_binary_name,
looks_like_bun_standalone, and the current violation collection to keep the
behavior consistent.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: e8012693-3b67-4729-9f7f-3634beb5bb62

📥 Commits

Reviewing files that changed from the base of the PR and between e20f8ff and eb4e3af.

📒 Files selected for processing (5)
  • .github/workflows/ci.yml
  • .github/workflows/nightly.yml
  • .github/workflows/release.yml
  • scripts/verify-no-bundled-agent-runtimes.sh
  • tests/test_bundled_provider_runtime_guard.sh

Comment thread scripts/verify-no-bundled-agent-runtimes.sh
Comment thread .github/workflows/nightly.yml
@lawrencecchen lawrencecchen added the stale-revisit Closed after 30+ days without activity; preserved for possible revisit or reopening. label Sep 23, 2026
@github-project-automation github-project-automation Bot moved this from Todo to Done in cmux backlog Sep 23, 2026

This branch was successfully deployed

1 active deployment
Preview – cmux — 4086767c Deployed Jul 5, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stale-revisit Closed after 30+ days without activity; preserved for possible revisit or reopening.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bundled Bun 1.3.14 segfaults (use-after-free) in FetchTasklet on HTTP timeout — please bump Bun

3 participants