Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0373dc6973
ℹ️ 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".
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR adds substantial Podman and Apptainer runtime capabilities and rewrites shared container execution, Docker networking, port exposure, and host-callback proxy behavior. The changes affect existing production paths and sandbox isolation, with an unresolved resource-leak finding in shared process handling, so the scope and risk warrant human review. Not approved because:
Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4caf3c4057
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ef30215d05
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6112ce7447
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c3c46865fd
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 38cf0c2941
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 72bfe978e2
ℹ️ 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".
72bfe97 to
f012c79
Compare
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
f012c79 to
c2d39dc
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c2d39dcb24
ℹ️ 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".
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c2d39dc. Configure here.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a1e83fd601
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 56e9b94b31
ℹ️ 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".
56e9b94 to
708dbeb
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 708dbebc0b
ℹ️ 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".
| # post-setsid PID before exec preserves it as the target PID. | ||
| wrapper = ( | ||
| "if setsid -w true >/dev/null 2>&1; then " | ||
| 'exec setsid -w sh -c \'echo $$ > "$1"; shift; exec "$@"\' ' |
There was a problem hiding this comment.
🟡 Medium runtimes/container.py:167
open_process leaves each /tmp/vf-process-*.pid file behind after the process exits, so long-lived shared container and Apptainer runtimes accumulate one file per session and can eventually exhaust their writable workspace. Pass the PID-file path to ContainerProcess and remove it when wait() completes, while retaining the existing startup-cleanup path for failures.
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @verifiers/v1/runtimes/container.py around line 167:
`open_process` leaves each `/tmp/vf-process-*.pid` file behind after the process exits, so long-lived shared container and Apptainer runtimes accumulate one file per session and can eventually exhaust their writable workspace. Pass the PID-file path to `ContainerProcess` and remove it when `wait()` completes, while retaining the existing startup-cleanup path for failures.

Overview
Adds
podmanandapptaineras local runtimes through one shared command, process, and file implementation. Docker and Podman use engine-managed bridge networking and the existing Verifiers proxy so host callbacks and published services remain reachable during restricted execution.Details
ContainerRuntime; Podman shares Docker's lifecycle and networking with native NVIDIA CDI device selection. Use native detached exec for Docker/Podman background servers.iptablesinstalled. Preserve host-published service traffic while blocking peer requests and replies after the egress cut, retain background-server proxy settings, and route MCP exposure throughRuntime.expose().Performance
Isolating the helper-cache change on main (
1e3e729) on an Apple M4 Max running macOS 27.0 and OrbStack Docker 29.4.0 reduced medianDockerRuntime.start()+prepare_execution()latency from 0.823 s to 0.291 s: 64.6% lower latency (2.82×), saving 0.531 s per restricted start. This used six warm samples per variant, interleaved in three ABBA blocks after warmups. One cold helper build took 1.107 s, with 1.486 s for that first full start and policy application; base images were already cached. These measurements cover the helper cache on this machine only. Whole-PR performance, registry-cold pulls, Linux, model latency, and full evaluation throughput remain unmeasured.Supersedes #2469, #2470, #2473, and #2509. Related to #2319 and #2359.
Note
High Risk
Large changes to Docker networking, egress proxy, and host callback routing affect restricted execution and interception/MCP reachability; container naming and expose semantics also changed.
Overview
Adds
podmanandapptaineras first-class local runtimes and refactors Docker onto a sharedContainerRuntime(CLI exec, processes, file I/O). Podman reuses Docker’s bridge networking, egress proxy, and published service port; Apptainer runs contained instances on the host network with cached SIF images and does not support execution-time network policies.Docker/Podman now use bridge networking (not host), UUID container names, a cached
localhost/verifiers-network:1helper for restricted egress cuts, andhost_urlroutes loopback framework HTTP(S) through the egress proxy’s tokenized callback URLs (cookies, redirects, auth scoping).Runtime.exposealways returns a URL; container engines publishSERVICE_PORTto loopback. MCP serving usesprovision_runtime, fixes trailing-slash URL building, and tunnels local services only for remote consumers.Docs, pytest marks, and e2e placements cover the new runtimes (skipped when the CLI is missing).
Reviewed by Cursor Bugbot for commit f4faa84. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add shared
PodmanRuntimeandApptainerRuntimewith commonContainerRuntimebaseContainerRuntime,ContainerConfig, andContainerProcessin container.py, letting Docker, Podman, and Apptainer reuse process management, file transfer, and command execution.PodmanRuntimeas aDockerRuntimespecialization and a standaloneApptainerRuntimewith image pull/caching, instance lifecycle, and workdir validation in apptainer.py.DockerRuntimestartup in init.py to use an engine selector, generated container names, bridge networking with publishedSERVICE_PORT, and iptables-based restricted-network policy instead of package-install cuts.Rolloutand MCP server state URL construction; updatesreachable_urlandRuntime.exposeso non-colocated consumers receive the runtime's exposed URL.DockerRuntime.host_urlnow returns proxy callback URLs for all loopback hosts (not just two hardcoded names) regardless of restriction state;NetworkPolicy.permitsrejects loopback hosts before framework-route matching;Runtime.exposebase implementation returns an HTTP URL instead ofNone;_PASS_LISTENERno longer setsSO_REUSEADDR.Macroscope summarized f4faa84.