Skip to content

feat: add the optional Antigravity runtime core - #74

Merged
eXPerience83 merged 14 commits into
mainfrom
feat/optional-antigravity-runtime
Aug 2, 2026
Merged

feat: add the optional Antigravity runtime core#74
eXPerience83 merged 14 commits into
mainfrom
feat/optional-antigravity-runtime

Conversation

@eXPerience83

@eXPerience83 eXPerience83 commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Progresses #27.

Scope

This PR adds the auditable runtime core only. It deliberately does not copy the commands into the image or wire Antigravity into the menu, role dispatcher, diagnostics, persistence mounts or TrueNAS deployment yet.

  • add remote-dev-antigravity install|update|status|path
  • add explicit install/update wrappers and run-antigravity
  • require interactive confirmation or explicit --yes before any download
  • show the Google product, account, terms, privacy and non-affiliation disclosure in both interactive and --yes flows
  • use the fixed official Google installer URL only, including HTTPS-only redirects
  • verify the installer against committed inspection evidence before Bash executes it
  • run the installer with closed stdin, a bounded timeout, an empty temporary home and an isolated staging directory
  • verify the staged agy size, SHA-256 and version before invoking or publishing it
  • publish a reviewed executable and local manifest with rollback on ordinary failures
  • repair an interrupted manifest automatically when the installed executable still matches current reviewed evidence
  • preserve an older trusted installation when a staged update fails
  • disable background CLI updates for version checks and launched sessions
  • reject broad, parent-traversing or symlinked persistence/workspace paths
  • keep missing-installation and stale-version launch failures actionable and download-free
  • invoke the existing persistent-state hardening hook from an EXIT trap, including interrupted sessions

Production Antigravity-specific credential/state hardening is intentionally deferred to the role-integration PR so Codex and Shell behavior remains unchanged in this slice.

Offline regression coverage

The dedicated workflow uses generated fixtures only and validates:

  • cancellation before any download
  • first installation and status detection
  • literal argument preservation without shell evaluation
  • official CLI exit-status preservation
  • post-session hardening hook execution
  • no implicit install from the launcher
  • failed-update rollback behavior
  • reviewed update behavior
  • installer hash rejection before Bash
  • payload hash rejection before agy --version
  • unexpected package layout rejection
  • malformed version output rejection

Validation

  • optional Antigravity runtime fixture workflow: passed
  • AMD64 build, smoke tests, notices, SBOM, Trivy and fixable-critical gate: passed

Next slice

After this core passes final review, a separate PR will copy the commands into the image and add the Antigravity role, tmux/direct mode, menu actions, diagnostics, shared root-owned path definitions, role-specific state hardening, persistence mounts and the TrueNAS validation plan.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@eXPerience83, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 33 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 3429c47a-47e9-4b45-9313-b2a0c8e3dbc5

📥 Commits

Reviewing files that changed from the base of the PR and between 7629d33 and 6adfaad.

📒 Files selected for processing (2)
  • scripts/remote-dev-antigravity.sh
  • scripts/run-antigravity.sh

Summary by CodeRabbit

  • New Features

    • Added secure Antigravity runtime installation, updating, validation, status, and executable path commands.
    • Added a launcher for starting Antigravity sessions with workspace and persistent-state protections.
    • Added convenience commands for installing and updating the runtime.
  • Bug Fixes

    • Improved handling of invalid installations, failed updates, permissions, and automatic update controls.
  • Tests

    • Added comprehensive regression coverage for installation, updates, validation, security, cancellation, and exit-status handling.
    • Added optional automated workflow support for runtime regression testing.

Walkthrough

Adds a complete Antigravity runtime lifecycle. The changes provide installation and update commands, verified executable activation, runtime launching, persistent-state hardening, fixture-based regression tests, and GitHub Actions automation.

Changes

Antigravity runtime

Layer / File(s) Summary
Installer verification and activation
scripts/remote-dev-antigravity.sh, scripts/remote-dev-install-antigravity.sh, scripts/remote-dev-update-antigravity.sh
Adds install, update, status, and path commands. The installer validates approved metadata, stages files, writes protected manifests, and atomically activates binaries.
Runtime launch and state hardening
scripts/run-antigravity.sh, scripts/secure-persistent-state.sh
Adds Antigravity launch validation, update disabling, exit-status preservation, and recursive protection for Antigravity state and executable paths.
Fixture lifecycle regression coverage
scripts/test-antigravity-runtime.sh
Adds isolated fixtures and tests for installation, updates, launch arguments, state hardening, approval checks, malformed output, and failure handling.
Automated workflow execution
.github/workflows/test-antigravity-runtime.yml
Adds pull-request and manual workflow triggers, shell syntax checks, read-only permissions, cancellation, and the controlled runtime test.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related issues

Possibly related PRs

Sequence Diagram(s)

sequenceDiagram
  participant Developer
  participant GitHubActions
  participant RuntimeTest
  participant AntigravityCLI
  participant AntigravityBinary
  Developer->>GitHubActions: open pull request or dispatch workflow
  GitHubActions->>RuntimeTest: validate scripts and run fixture lifecycle
  RuntimeTest->>AntigravityCLI: install or update approved fixture
  AntigravityCLI-->>RuntimeTest: report status and executable path
  RuntimeTest->>AntigravityBinary: launch with preserved arguments
  AntigravityBinary-->>RuntimeTest: return configured exit status
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 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 (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely identifies the main change: adding the optional Antigravity runtime core.
Description check ✅ Passed The description provides detailed scope, security behavior, validation results, deferred integration work, and follow-up plans, despite not matching every template heading.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/optional-antigravity-runtime

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.

@eXPerience83
eXPerience83 marked this pull request as ready for review August 2, 2026 19:27

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7629d333bc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/run-antigravity.sh Outdated
Comment thread scripts/remote-dev-antigravity.sh
Comment thread scripts/remote-dev-antigravity.sh Outdated

@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: 14

🤖 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/remote-dev-antigravity.sh`:
- Around line 271-289: Bound both vendor-supplied executions and make them
non-interactive: in scripts/remote-dev-antigravity.sh lines 271-289, update
run_installer_isolated to invoke the installer through timeout 900s and redirect
stdin from /dev/null; in lines 162-182, update run_binary_no_update to invoke
the candidate through timeout 30s and redirect stdin from /dev/null. Also add
timeout to the require_tools list around lines 109.
- Around line 360-363: Update the staged executable permission in the
installation flow around verify_file_identity and chmod to use mode 0700 instead
of 0755, matching the final installed mode while preserving the surrounding
validation and manifest-writing steps.
- Around line 10-16: Update the cleanup trap in cleanup to handle INT and TERM
as well as EXIT, ensuring interruptions during download or installation remove
cleanup_root under the same guarded removal logic.
- Around line 70-79: Update reject_symlink_components so the ancestor walk
detects when dirname no longer changes current and exits the loop, while
preserving the existing root termination and symlink rejection behavior. Ensure
paths such as //srv/state cannot cause an infinite loop when dirname returns the
same value.
- Around line 367-372: Update the replacement flow around the final_new and
manifest_new renames to move the manifest before the binary, and make the
mismatch/error paths in read_current_installation (including the Line 197 and
Line 210 cases) explicitly instruct users to remove both $binary and $manifest,
then run remote-dev-install-antigravity. Ensure the actionable recovery guidance
appears for the SHA mismatch and manifest identity failure scenarios.
- Around line 116-117: Update the jq validation at the evidence gate to
explicitly require .schema_version to be a number before applying the >= 2
comparison, while preserving the exact empty-array check for .blocking_findings.
Do not change the manifest gate’s existing .schema_version == 1 comparison.
- Around line 252-264: Update the curl invocation that downloads from
OFFICIAL_INSTALLER_URL to explicitly restrict redirected requests to HTTPS using
the appropriate redirect-protocol option, matching the existing --proto '=https'
constraint. Keep the current retry, timeout, and output behavior unchanged.
- Around line 61-65: Extend the broad-path case list in the path validation
logic to reject /home, /opt, /usr, /usr/local, /etc, /var, and
/root/.local/share alongside the existing entries. Keep these values routed
through fail with the existing label and message behavior.

In `@scripts/run-antigravity.sh`:
- Around line 28-30: Update the status gate in the launcher around the manager
status invocation to capture its stdout and, when the command rejects the
launch, print that captured reason along with the recovery guidance before
preserving the nonzero exit status. Keep successful status checks silent and
retain the existing set -euo pipefail behavior.
- Around line 32-36: Harden the WORKSPACE validation before the mkdir and cd
flow: reject parent-directory components and broad root targets, and reject
symlinked path components using the same policy as require_absolute_safe_path
and reject_symlink_components in the remote-dev launcher. Alternatively, require
WORKSPACE to already exist so this script never creates an untrusted path, while
preserving the existing absolute-path and newline checks.
- Around line 40-48: Install an EXIT trap in the launcher that invokes the
existing secure_state hardening command whenever the script terminates,
including signal-driven exits. Ensure the trap preserves the captured
session_status and avoids running the hardening step twice on the normal path by
consolidating cleanup and final exit behavior around session_status.

In `@scripts/secure-persistent-state.sh`:
- Around line 79-87: Wrap the Antigravity hardening block identified by
secure_dir "$antigravity_bin_dir" and the subsequent secure_tree calls in a
REMOTE_DEV_ROLE == antigravity condition. Ensure Codex and Shell startup skip
all Antigravity directory, file, and vendor-tree inspection while preserving the
existing hardening behavior for the antigravity role.
- Around line 19-27: Centralize the Antigravity path defaults currently
duplicated in the secure-state setup and the runtime manager: add a root-owned,
read-only scripts/antigravity-paths.sh containing the three path assignments,
then have both scripts/secure-persistent-state.sh and
scripts/remote-dev-antigravity.sh read those shared values instead of defining
local literals. Keep the REMOTE_DEV_ANTIGRAVITY_TESTING overrides and
required-variable validation in secure-persistent-state.sh, and ensure the
shared file is not sourced from user-writable state.

In `@scripts/test-antigravity-runtime.sh`:
- Around line 232-273: Extract the repeated failure-test boilerplate from the
four installer scenarios into a helper such as assert_install_rejects, accepting
setup and assertion callbacks. Keep fixture creation, evidence mismatches, and
scenario-specific assertions in the callbacks, while the helper handles
reset_runtime, exporting REMOTE_DEV_ANTIGRAVITY_INSTALLER_FIXTURE, running the
expected-failure install, and invoking the assertion.
🪄 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 Plus

Run ID: 816bc913-dd80-4730-bd58-6383fe2f4845

📥 Commits

Reviewing files that changed from the base of the PR and between e431197 and 7629d33.

📒 Files selected for processing (7)
  • .github/workflows/test-antigravity-runtime.yml
  • scripts/remote-dev-antigravity.sh
  • scripts/remote-dev-install-antigravity.sh
  • scripts/remote-dev-update-antigravity.sh
  • scripts/run-antigravity.sh
  • scripts/secure-persistent-state.sh
  • scripts/test-antigravity-runtime.sh
📜 Review details
🧰 Additional context used
📓 Path-based instructions (7)
**/*.{yml,yaml,Dockerfile,sh,bash,js,ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{yml,yaml,Dockerfile,sh,bash,js,ts,tsx}: Never use privileged containers, Docker or Podman sockets, SYS_ADMIN, host-root mounts, or broad persistence mounts such as /root, /home, /opt, /usr/local, or a parent data root.
Preserve mandatory ttyd authentication for agent terminals, origin checking for all web endpoints, tmux reconnect behavior, image identity checks, and existing Codex login, start, and resume behavior.

Files:

  • scripts/remote-dev-update-antigravity.sh
  • scripts/remote-dev-install-antigravity.sh
  • scripts/test-antigravity-runtime.sh
  • scripts/secure-persistent-state.sh
  • scripts/run-antigravity.sh
  • scripts/remote-dev-antigravity.sh
**/*.{sh,bash,js,ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Never use eval, sourced editable state, or user-controlled shell fragments for role, mode, installer, routing, or command dispatch.

Files:

  • scripts/remote-dev-update-antigravity.sh
  • scripts/remote-dev-install-antigravity.sh
  • scripts/test-antigravity-runtime.sh
  • scripts/secure-persistent-state.sh
  • scripts/run-antigravity.sh
  • scripts/remote-dev-antigravity.sh
**/*.{sh,bash}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{sh,bash}: Use fixed, validated enums for roles and start modes; reject unknown values with a deterministic non-zero exit status and a clear message.
Build command invocations with Bash arrays, preserve arguments without re-evaluating them, preserve command exit status, and run persistent-state hardening after supported interactive sessions.

Files:

  • scripts/remote-dev-update-antigravity.sh
  • scripts/remote-dev-install-antigravity.sh
  • scripts/test-antigravity-runtime.sh
  • scripts/secure-persistent-state.sh
  • scripts/run-antigravity.sh
  • scripts/remote-dev-antigravity.sh
**/*.{yml,yaml,sh,bash}

📄 CodeRabbit inference engine (AGENTS.md)

Implement issue #25 in separately reviewed slices: role-neutral commands and validation, configurable Codex approval modes, canonical image and variable naming with time-bounded aliases, shared image digest, Compose and state migration, and outer hardening with cross-service canaries.

Files:

  • scripts/remote-dev-update-antigravity.sh
  • scripts/remote-dev-install-antigravity.sh
  • scripts/test-antigravity-runtime.sh
  • scripts/secure-persistent-state.sh
  • scripts/run-antigravity.sh
  • scripts/remote-dev-antigravity.sh
**/*.{sh,bash,js,ts,tsx,yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

Run the narrowest relevant tests during development and complete required CI before merge; preserve or extend coverage for role/start-mode validation, wrappers, launcher security, mounts, image identity, health checks, Codex flows, credential hardening, ttyd, tmux, provenance, notices, SBOM, Trivy, and the critical-vulnerability gate.

Files:

  • scripts/remote-dev-update-antigravity.sh
  • scripts/remote-dev-install-antigravity.sh
  • scripts/test-antigravity-runtime.sh
  • scripts/secure-persistent-state.sh
  • scripts/run-antigravity.sh
  • scripts/remote-dev-antigravity.sh
scripts/**/*.sh

⚙️ CodeRabbit configuration file

scripts/**/*.sh: Review as production Bash. Check quoting, set -euo pipefail behavior, cleanup traps,
bounded retries and timeouts, non-interactive execution, idempotency and useful failure messages.
Flag commands that can hang, leak credentials, silently ignore failures or mutate persistent data unexpectedly.

Files:

  • scripts/remote-dev-update-antigravity.sh
  • scripts/remote-dev-install-antigravity.sh
  • scripts/test-antigravity-runtime.sh
  • scripts/secure-persistent-state.sh
  • scripts/run-antigravity.sh
  • scripts/remote-dev-antigravity.sh
.github/workflows/**

⚙️ CodeRabbit configuration file

.github/workflows/**: Review GitHub Actions for least-privilege permissions, safe event triggers, untrusted input handling,
accidental publication, tag-channel correctness, secret exposure, reproducible builds, SBOM/provenance
generation and appropriate validation before pushing images.

Files:

  • .github/workflows/test-antigravity-runtime.yml
🪛 ast-grep (0.45.0)
scripts/test-antigravity-runtime.sh

[warning] 197-197: set +e (or set +o errexit) disables the shell's errexit option, so the script keeps running after a command fails. This masks failures of security-critical operations (downloads, signature/checksum verification, permission changes, cleanup of secrets), letting the script proceed with a bad or insecure state. Leave errexit enabled (set -e / set -euo pipefail), or handle failures explicitly with if/|| and an explicit exit instead of globally turning off failure detection.
Context: set +e
Note: [CWE-754] Improper Check for Unusual or Exceptional Conditions.

(set-plus-e-error-masking-bash)

🪛 Shellcheck (0.11.0)
scripts/test-antigravity-runtime.sh

[info] 74-74: Expressions don't expand in single quotes, use double quotes for that.

(SC2016)

scripts/remote-dev-antigravity.sh

[warning] 354-354: When used with -p, -m only applies to the deepest directory.

(SC2174)

🔇 Additional comments (15)
scripts/remote-dev-antigravity.sh (5)

81-112: LGTM!


136-160: LGTM!


184-212: LGTM!


214-245: LGTM!


383-412: LGTM!

Also applies to: 414-443

scripts/remote-dev-install-antigravity.sh (1)

1-3: LGTM!

scripts/remote-dev-update-antigravity.sh (1)

1-3: LGTM!

scripts/run-antigravity.sh (2)

4-16: LGTM!


43-46: 🎯 Functional Correctness

No change needed.

secure-persistent-state.sh uses REMOTE_DEV_ROLE as the role input and REMOTE_DEV_ROLE is already exported by run-antigravity.sh, so the no-argument invocation is valid.

			> Likely an incorrect or invalid review comment.
scripts/secure-persistent-state.sh (2)

6-6: LGTM!


43-54: LGTM!

scripts/test-antigravity-runtime.sh (2)

1-159: LGTM!

Also applies to: 168-231


161-166: 🩺 Stability & Availability

No change needed.

A declined confirmation exits 0, so the set -e guard does not terminate the test prematurely.

.github/workflows/test-antigravity-runtime.yml (2)

1-21: LGTM!

Also applies to: 29-42


6-9: 📐 Maintainability & Code Quality

Wrap coverage concern is satisfied.

scripts/remote-dev-install-antigravity.sh and scripts/remote-dev-update-antigravity.sh are thin dispatch wrappers that only prepend install / update, then exec the manager with forwarded arguments, so the existing syntax check covers them.

Comment thread scripts/remote-dev-antigravity.sh
Comment thread scripts/remote-dev-antigravity.sh
Comment thread scripts/remote-dev-antigravity.sh
Comment thread scripts/remote-dev-antigravity.sh Outdated
Comment thread scripts/remote-dev-antigravity.sh
Comment thread scripts/run-antigravity.sh
Comment thread scripts/run-antigravity.sh Outdated
Comment thread scripts/secure-persistent-state.sh Outdated
Comment thread scripts/secure-persistent-state.sh Outdated
Comment thread scripts/test-antigravity-runtime.sh

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aa07037aea

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/run-antigravity.sh Outdated

Copy link
Copy Markdown
Owner Author

@codex review

Please review the current head after the runtime hardening and recoverability fixes. Focus on installer/payload trust gates, signal handling, publication recovery, path validation, disclosures and absence of implicit downloads.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6adfaad4d5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

trap 'forward_signal INT 130' INT
trap 'forward_signal TERM 143' TERM

"$binary" "$@" &

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Keep the background CLI attached to stdin

In normal use this non-interactive Bash script has job control disabled, so Bash redirects an asynchronous command's standard input from /dev/null unless an explicit redirection is supplied. Launching agy with & therefore makes login prompts and interactive agent sessions receive EOF rather than terminal input, even though their output remains visible; explicitly preserve fd 0 when backgrounding or use a foreground signal-aware arrangement.

AGENTS.md reference: AGENTS.md:L54-L54

Useful? React with 👍 / 👎.

trap 'forward_signal INT 130' INT
trap 'forward_signal TERM 143' TERM

"$binary" "$@" &

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reset SIGINT before execing the background child

When a user presses Ctrl-C in an Antigravity terminal, asynchronous commands started with job control disabled inherit SIGINT as ignored. Fresh evidence in the final head is this new background launch: the parent trap forwards INT, but agy ignores it and forward_signal then blocks in wait, preventing both session termination and the EXIT hardening path. Reset the child's SIGINT disposition before execing it.

AGENTS.md reference: AGENTS.md:L54-L54

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

@codex review

Final pass on current head 6adfaad4d5: signal forwarding to the child is now explicit, all prior threads are resolved, and both the offline runtime workflow and full AMD64 build are green.

@eXPerience83
eXPerience83 merged commit 68be9d1 into main Aug 2, 2026
3 checks passed

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6adfaad4d5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +273 to +276
local old_sha old_size old_version
old_sha="$(jq -er '.binary_sha256' "$manifest")"
old_size="$(jq -er '.binary_size' "$manifest")"
old_version="$(jq -er '.version' "$manifest")"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Validate legacy binaries against immutable evidence

When an existing installation no longer matches the current bundled evidence, this code treats fields from the locally writable install.json as trust anchors. A compromised or tampered agy process can replace both its executable and manifest with matching attacker-chosen hash, size, and version values; read_current_installation then accepts them and executes the replacement via read_version_with_identity during every status, launch, or update, bypassing the intended executable identity check. Validate legacy versions against immutable bundled historical evidence, or avoid executing any binary that does not match such evidence.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant