Expose RHEL/Amazon Linux CA roots in chroot mode#6460
Conversation
There was a problem hiding this comment.
Pull request overview
Exposes RHEL/Amazon Linux CA bundles inside Docker chroot mode to restore native TLS trust.
Changes:
- Adds
/etc/pkiCA paths to the mount policy. - Recognizes mounted RHEL-family CA bundles in the entrypoint.
- Updates documentation and regression assertions.
Show a summary per file
| File | Description |
|---|---|
containers/agent/entrypoint.sh |
Recognizes mounted RHEL CA paths. |
docs/chroot-mode.md |
Documents new CA mounts. |
src/config/mount-policy.test.ts |
Tests policy entries. |
src/config/sandbox-mount-policy.json |
Adds RHEL CA mounts. |
src/services/agent-volumes-basic.test.ts |
Tests generated agent volumes. |
src/services/agent-volumes/etc-mounts.test.ts |
Tests /etc mount generation. |
tests/entrypoint-phase-functions.test.sh |
Checks entrypoint CA-path handling. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 7/7 changed files
- Comments generated: 3
- Review effort level: Medium
| "sysroot": ["/sys", "/dev"] | ||
| }, | ||
| "etc": ["/etc/ssl", "/etc/ca-certificates", "/etc/alternatives", "/etc/ld.so.cache", "/etc/nsswitch.conf"] | ||
| "etc": ["/etc/ssl", "/etc/ca-certificates", "/etc/pki/ca-trust", "/etc/pki/tls", "/etc/alternatives", "/etc/ld.so.cache", "/etc/nsswitch.conf"] |
| "sysroot": ["/sys", "/dev"] | ||
| }, | ||
| "etc": ["/etc/ssl", "/etc/ca-certificates", "/etc/alternatives", "/etc/ld.so.cache", "/etc/nsswitch.conf"] | ||
| "etc": ["/etc/ssl", "/etc/ca-certificates", "/etc/pki/ca-trust", "/etc/pki/tls", "/etc/alternatives", "/etc/ld.so.cache", "/etc/nsswitch.conf"] |
| if printf '%s\n' "${COPY_SYSTEM_CA_BUNDLE_BLOCK}" | grep -Fq '/etc/pki/ca-trust/*|/etc/pki/tls/*)'; then | ||
| pass "copy_system_ca_bundle() treats mounted RHEL/Amazon Linux CA paths as chroot-accessible" | ||
| else | ||
| fail "copy_system_ca_bundle() does not recognize mounted RHEL/Amazon Linux CA paths as chroot-accessible" |
|
@copilot Fix the code for all comments in this review thread. When a review comment includes a suggested change, apply the suggestion exactly. Do not make changes beyond what is described in the linked review thread. |
Implemented in commit |
|
✅ Copilot review passed with no inline comments. @copilot Add the |
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤 |
|
✅ Smoke Gemini completed. All facets verified. 💎 |
|
🛡️ Smoke Copilot Network Isolation confirmed the egress allowlist is enforced. ✅ |
|
📡 Smoke OTel Tracing completed. All tracing scenarios validated. ✅ |
|
❌ Security Guard failed. Please review the logs for details. |
|
🔌 Smoke Services — All services reachable! ✅ |
|
✅ Contribution Check completed successfully! Contribution check complete: PR #6460 follows the documented contribution guidelines. It includes tests for the new CA mount behavior, updates docs, places changes in the appropriate source and test directories, and the PR description is clear with a related issue reference. No comment needed. |
|
❌ Smoke Copilot BYOK reports failed. BYOK mode investigation needed... Copilot BYOK (Direct) Smoke Test: PASS ✅ GitHub MCP connectivity (API responsive) Running in direct BYOK mode with COPILOT_PROVIDER_API_KEY routing through api-proxy. |
Smoke Test: Claude Engine Validation
Overall result: PASS
|
Smoke Test: Services Connectivity
Overall: FAIL —
|
🔥 Smoke Test Results
Overall: PASS (core connectivity confirmed) Triggered on PR #6460 by
|
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.
|
|
|
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 Status: Running in direct BYOK mode via api-proxy → Azure OpenAI (Foundry, o4-mini-aw) authenticated via Microsoft Entra Overall: PASS
|
Chroot Runtime Version Check ✅All runtimes match between host and chroot environments.
|
Smoke Test: API Proxy OpenTelemetry Tracing — Results
All 5 scenarios pass. OTEL tracing integration is fully functional with fan-out export, parent context propagation, GenAI semantic conventions, and graceful no-op fallback when unconfigured.
|
🏗️ Build Test Suite Results
Overall: 8/8 ecosystems passed — ✅ PASS
|
🔬 Smoke Test Results — Docker Sbx
Overall: PASS (core connectivity verified; file test skipped due to unexpanded template vars in pre-step) cc
|
Amazon Linux and RHEL runners could still lose access to the system CA bundle after entering the chroot, even with bundle copy logic present. The missing
/etc/pkivisibility left native TLS clients without trusted roots and caused Copilot CLI requests to fail before the first model call.Mount policy
/etcallowlist:/etc/pki/ca-trust/etc/pki/tls/etc/sslsymlink targets under/etc/pkiresolvable inside/host.Entrypoint CA detection
/etc/pki/ca-trust/*and/etc/pki/tls/*the same as existing mounted CA paths./tmp/awf-lib/system-ca-certificates.crtand point TLS env vars at the staged copy.Regression coverage
/etc/pkimounts.