fix(agent): restore python3 in agent image for seccomp regression check#6559
Conversation
There was a problem hiding this comment.
Pull request overview
Replaces the agent image’s Python-dependent seccomp regression harness with a static, cross-compiled Go probe.
Changes:
- Adds an amd64/arm64 raw-syscall Go probe.
- Builds and bind-mounts the probe for seccomp checks.
- Adds Go setup to the release workflow.
Show a summary per file
| File | Description |
|---|---|
scripts/ci/seccomp-probe.go |
Implements the static syscall probe. |
scripts/ci/check-agent-seccomp-syscalls.sh |
Builds and executes the probe. |
.github/workflows/release.yml |
Installs Go for the release check. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 3/3 changed files
- Comments generated: 1
- Review effort level: Medium
| with: | ||
| go-version: '1.24' |
✅ Coverage Check PassedOverall Coverage
📁 Per-file Coverage Changes (1 files)
Coverage comparison generated by |
PR #6545 (CVE cleanup) reworked the agent image's package install and switched Node.js from the NodeSource apt package to the official static tarball. That inadvertently dropped python3, which had been present transitively and is used by the release-time seccomp regression check (scripts/ci/check-agent-seccomp-syscalls.sh) to fire the name_to_handle_at/open_by_handle_at syscalls via python3+ctypes. As a result the "Verify seccomp blocks name_to_handle_at/open_by_handle_at" release step failed with "Image does not contain python3". Restore python3 by adding it to the agent image's package list. python3 is also commonly needed by agent workflows, matching GitHub runner images. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b5e69791-2bb7-4379-938e-464e9b83c056
0731185 to
3fc9f73
Compare
|
✅ Copilot review passed with no inline comments. @lpcox Add the |
|
❌ Smoke Copilot BYOK AOAI (api-key) reports failed. AOAI BYOK (api-key) mode investigation needed... |
|
📡 Smoke OTel Tracing completed. All tracing scenarios validated. ✅ |
|
📰 VERDICT: Smoke Docker Sbx has concluded. All systems operational. This is a developing story. 🎤 |
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤 |
|
✅ Smoke Claude passed |
|
✅ Smoke Copilot BYOK AOAI (Entra) completed. Copilot AOAI BYOK (Entra) mode operational. 🔓 |
|
✅ Smoke Gemini completed. All facets verified. 💎 |
|
🔌 Smoke Services — All services reachable! ✅ |
|
✅ Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓 |
|
✅ Build Test Suite completed successfully! |
|
🔑 Smoke Copilot PAT reports failed. PAT auth path may have issues... |
|
✅ Contribution Check completed successfully! Contribution check complete: PR #6559 is consistent with CONTRIBUTING.md. The change is in the correct container directory, the PR description is clear and references related work, and the existing release-time seccomp regression check covers the behavior. No guideline-level issue to comment on. |
|
✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟 |
|
Chroot tests passed! Smoke Chroot - All security and functionality tests succeeded. |
|
🛡️ Smoke Copilot Network Isolation confirmed the egress allowlist is enforced. ✅ |
|
❌ Security Guard failed. Please review the logs for details. |
🔬 Smoke Test Results
Overall: PARTIAL — MCP reachable; pre-computed step outputs were not substituted (template variable issue in workflow). CC: @lpcox
|
Smoke Test: Claude Engine Validation
Overall result: PASS ✅
|
🔒 Smoke Test: Copilot Network Isolation
Overall: PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "example.com"See Network Configuration for more information.
|
Smoke Test: Copilot BYOK (Direct) Mode ✅Tests Passed:
Status: PASS Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY) via api-proxy sidecar with real credentials held server-side.
|
Gemini Smoke Test Results
Overall Status: FAIL Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "localhost"See Network Configuration for more information.
|
Smoke Test
Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
network:
allowed:
- defaults
- "registry.npmjs.org"See Network Configuration for more information.
|
Chroot Version Comparison Results
Overall: ❌ FAILED — Node.js version mismatch between host (
|
Smoke Test: Services Connectivity
Overall: FAIL —
|
|
@lpcox Smoke test results:
|
🔍 Smoke Test: API Proxy OpenTelemetry Tracing
All 5 scenarios pass. OTEL tracing integration is fully functional.
|
🏗️ Build Test Suite Results
Overall: 8/8 ecosystems passed — ✅ PASS
|
🔥 Smoke Test Results — PR #6559
Overall: PARTIAL PASS (2/3 infra tests passed; file test blocked by unresolved template variables)
|
Problem
The release workflow's "Verify seccomp blocks name_to_handle_at/open_by_handle_at" step started failing (run 30055796826) with:
That release-time check (
scripts/ci/check-agent-seccomp-syscalls.sh) runsdocker run --entrypoint python3 <agent-image>and usespython3+ctypesto fire the rawname_to_handle_at/open_by_handle_atsyscalls and assert the seccomp profile denies them.python3had been present in the agent image transitively (via the old NodeSource apt install of Node.js) and the prior release (v0.27.39) ran the probe successfully. PR #6545 ("resolve High/Critical CVEs in agent, api-proxy, and cli-proxy container images", commit9bfc7260) reworked the package install and switched Node.js from the NodeSource.debto the official static tarball — the only change tocontainers/agent/Dockerfilebetween the passing and failing releases — which inadvertently dropped that transitivepython3.Fix
Restore
python3explicitly by adding it to the agent image's package list. This returns the image to its prior (working) state for the seccomp check, andpython3is also commonly needed by agent workflows, matching the GitHub runner images.--no-install-recommendsstill pullslibpython3.10-stdlib, soctypes(used by the probe) is available.The seccomp check script and profile are unchanged.
Notes
python3does not undo that remediation.containers/agent/Dockerfile.