Skip to content

fix(sbx): stop mounting the whole $HOME into the microVM (protect host secrets)#6336

Merged
lpcox merged 4 commits into
mainfrom
sbx-home-secret-protection
Jul 18, 2026
Merged

fix(sbx): stop mounting the whole $HOME into the microVM (protect host secrets)#6336
lpcox merged 4 commits into
mainfrom
sbx-home-secret-protection

Conversation

@lpcox

@lpcox lpcox commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Problem

The sbx microVM path mounted the entire host $HOME (read-write) into the sandbox, exposing any credential files there (~/.aws, ~/.ssh, ~/.docker/config.json, ~/.kube, ~/.azure, ~/.npmrc, ~/.gitconfig, ~/.config/gh/hosts.yml, ~/.config/gcloud/*, …) to the agent. Compose mode already defends against this with an empty home volume + a tool-subdir whitelist + /dev/null overlays on known credential files (credential-hiding.ts); the sbx path had none of that — it only sanitizes env vars, not files.

Why not just port the /dev/null overlay?

sbx can't. Its mounts are positional and directory-granular (host path == guest path) — there's no way to map /dev/null onto a specific destination file, and an individual file can't be a positional mount at all. So the compose overlay trick isn't expressible; the only levers are which directories get mounted and what those directories contain on the host at create time.

Fix

Two layers, both driven by the shared home-whitelist.ts so the sbx and compose paths can't drift:

  1. Top-level whitelist. sbx-manager.ts stops mounting the whole $HOME. It mounts only a curated whitelist of tool/cache + agent-state subdirs (HOME_TOOL_SUBDIRS + .copilot/.gemini), and only those that exist on the host. Top-level credential stores (.aws, .ssh, .docker, .kube, .azure, .gnupg, .netrc, …) are never whitelisted, so they never enter the VM. Each whitelisted dir is mounted wholesale (as a directory) so its required loose files — e.g. ~/.copilot/mcp-config.json, ~/.copilot/settings.json — still work.

  2. Scrub nested credential stores. Several whitelisted dirs legitimately hold tool settings but also stash a secret in a well-known child: .config/gh, .config/gcloud, …; .cargo/credentials[.toml]; .claude/.credentials.json; .copilot/config.json; .gemini/oauth_creds.json / google_accounts.json. Since the parent is mounted wholesale and sbx can't overlay/mask a nested path, the manager moves those credential paths aside on the host before sbx create (into a .awf-sbx-cred-backup-<pid> dir at the home root — never a mounted subdir) and restores them after the sandbox is torn down (scrubHomeCredentials / restoreHomeCredentials). This is the sbx analog of compose mode's /dev/null overlays. The credential list lives in the shared CREDENTIAL_PATHS_BY_PARENT.

Agent credentials come from the api-proxy or environment, not from the host's on-disk auth store, so hiding these paths is safe.

Why this replaces the earlier child-by-child approach

The previous revision expanded these parents child-by-child, skipping credential children. That broke the Smoke Docker Sbx CI: expansion tried to mount loose files (e.g. ~/.copilot/mcp-config.json) as sbx positional mounts, which must be directories — sbx create failed: workspace path exists but is not a directory. Wholesale-mount-plus-scrub preserves those required files while still keeping secrets out.

Review feedback

Both Copilot review comments (credential files in .cargo/.claude and in .copilot/.gemini) are addressed: those paths are in CREDENTIAL_PATHS_BY_PARENT and scrubbed before create.

Verification

  • Tests: whole $HOME never mounted; whitelisted dirs mount only when they exist; top-level credential stores stay out; .config/.cargo/.claude/.copilot/.gemini mounted wholesale with their nested token stores moved aside before create; scrubbed credentials restored after removeSandbox; whitelist-invariant guards.
  • npm test: 242 suites / 3823 tests pass. npm run build clean. ESLint: 0 errors.

Notes

  • Compose mode masks .cargo/credentials etc. via /dev/null, but does not yet mask .claude/.copilot/.gemini token files — a separate compose gap worth closing in the deferred centralized mount-policy refactor.
  • docs/sbx-integration.md is updated to the wholesale + scrub model.
  • With --keep-containers, restore is deferred until the sandbox is eventually removed; the backup location is logged so a scrubbed home is always recoverable.

The sbx microVM path mounted the entire host $HOME (rw) into the
sandbox, exposing any host credential files — ~/.aws, ~/.ssh,
~/.docker/config.json, ~/.kube, ~/.azure, ~/.npmrc, ~/.gitconfig,
~/.config/gh, etc. — to the agent. Unlike compose mode, sbx cannot
express per-file /dev/null credential overlays (its mounts are
positional, host path == guest path), so directory curation is the
only available protection.

Replace the blanket $HOME mount with a curated whitelist of tool/cache
and agent-state subdirs, mounting only those that exist on the host.
Credential stores are never whitelisted, so they no longer enter the VM.

To keep the two backends from drifting, extract the shared tool-subdir
whitelist into src/services/agent-volumes/home-whitelist.ts and consume
it from both the compose chroot home strategy and the sbx mount builder.

Tests: add sbx cases asserting the whole $HOME is never mounted, that
whitelisted dirs are included only when they exist, and that credential
stores stay out. Full suite green (3817 tests).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 23717692-af7a-4e03-a156-5b696c3f01bd
Copilot AI review requested due to automatic review settings July 17, 2026 23:25
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Coverage Regression Detected

This PR decreases test coverage. Please add tests to maintain coverage levels.

Overall Coverage

Metric Base PR Delta
Lines 99.01% 99.05% 📈 +0.04%
Statements 98.95% 98.97% 📈 +0.02%
Functions 99.35% 99.35% ➡️ +0.00%
Branches 95.17% 95.14% 📉 -0.03%
📁 Per-file Coverage Changes (2 files)
File Lines (Before → After) Statements (Before → After)
src/sbx-manager.ts 100.0% → 100.0% (+0.00%) 100.0% → 99.1% (-0.87%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (1 files)
  • src/services/agent-volumes/home-whitelist.ts: 100.0% lines

Coverage comparison generated by scripts/ci/compare-coverage.ts

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Restricts sbx home-directory exposure by replacing the whole-home mount with curated subdirectory mounts.

Changes:

  • Adds a shared home tool-directory whitelist.
  • Uses existing whitelisted paths in sbx and compose.
  • Adds sbx mount-curation tests.
Show a summary per file
File Description
src/services/agent-volumes/home-whitelist.ts Defines the shared whitelist.
src/services/agent-volumes/home-strategy.ts Reuses the shared list in compose mode.
src/sbx-manager.ts Replaces the whole-home mount with existing subdirectories.
src/sbx-manager.test.ts Tests curated sbx home mounts.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 4/4 changed files
  • Comments generated: 2
  • Review effort level: Medium

Comment on lines +32 to +33
'.claude',
'.cargo',

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Good catch — fixed in d07a927. .cargo and .claude are now credential-nesting parents: sbx mounts them child-by-child and excludes the secret files (.cargo/credentials, .cargo/credentials.toml, .claude/.credentials.json) rather than mounting the dir wholesale. See CREDENTIAL_EXCLUSIONS_BY_PARENT in home-whitelist.ts, now covered by unit + sbx tests.

Comment thread src/sbx-manager.ts
// whitelisted, so they never enter the sandbox. Only paths that exist on the
// host are mounted, because sbx requires the mount source to exist.
const homePath = process.env.HOME || '/home/runner';
const homeSubdirs = ['.copilot', ...HOME_TOOL_SUBDIRS, '.gemini'];

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in d07a927. .copilot and .gemini are no longer appended wholesale — they are now credential-nesting parents, mounted child-by-child with config.json (Copilot) and oauth_creds.json/google_accounts.json (Gemini) excluded. Only their safe children (session-state, logs, tmp, settings, etc.) reach the VM. New sbx test asserts the token files never appear in the mount args.

Whitelisted home dirs like ~/.config are needed for tool settings but
also nest credential stores (.config/gh/hosts.yml, .config/gcloud/*,
etc.). Compose mode blanks those individual files with /dev/null
overlays; sbx cannot mask a nested path once its parent is mounted.

Mount credential-nesting parents (currently ~/.config) child-by-child
and skip any child whose basename is a known credential store
(CREDENTIAL_SUBDIR_NAMES: gh, gcloud, doctl, heroku, hub, rclone,
containers, pulumi, op, helm). sbx creates the parent mount point for
the surviving children, so the excluded credential dirs never exist
inside the microVM while benign tool config still works.

The deny-list and the credential-nesting set live in the shared
home-whitelist module so both backends stay in sync. Adds unit tests
for the whitelist invariants and a sbx case asserting .config is mounted
child-by-child with credential subdirs excluded.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 23717692-af7a-4e03-a156-5b696c3f01bd
@github-actions

Copy link
Copy Markdown
Contributor

✅ Copilot review passed with no inline comments.

@lpcox Add the ready-for-aw label to this PR to trigger agentic CI smoke tests.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Coverage Regression Detected

This PR decreases test coverage. Please add tests to maintain coverage levels.

Overall Coverage

Metric Base PR Delta
Lines 99.01% 99.05% 📈 +0.04%
Statements 98.95% 98.95% ➡️ +0.00%
Functions 99.35% 99.35% ➡️ +0.00%
Branches 95.17% 95.12% 📉 -0.05%
📁 Per-file Coverage Changes (2 files)
File Lines (Before → After) Statements (Before → After)
src/sbx-manager.ts 100.0% → 100.0% (+0.00%) 100.0% → 98.4% (-1.57%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (1 files)
  • src/services/agent-volumes/home-whitelist.ts: 100.0% lines

Coverage comparison generated by scripts/ci/compare-coverage.ts

Address review feedback: whitelisted tool dirs themselves hold
credential files that mounting them wholesale would expose to the agent
(sbx cannot overlay them):

- .cargo/credentials, .cargo/credentials.toml (crates.io tokens)
- .claude/.credentials.json (Claude Code OAuth)
- .copilot/config.json (Copilot CLI may persist its token)
- .gemini/oauth_creds.json, .gemini/google_accounts.json (Gemini OAuth)

Generalize the deny model from credential *subdir names* to a per-parent
map of credential child basenames (directories OR files),
CREDENTIAL_EXCLUSIONS_BY_PARENT, and expand each of those parents
child-by-child in sbx, skipping the listed secrets. sbx recreates the
parent mount point for the surviving children, so the excluded secrets
never exist inside the microVM while benign tool state still works.

Update whitelist + sbx tests accordingly.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 23717692-af7a-4e03-a156-5b696c3f01bd
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Coverage Regression Detected

This PR decreases test coverage. Please add tests to maintain coverage levels.

Overall Coverage

Metric Base PR Delta
Lines 99.01% 99.05% 📈 +0.04%
Statements 98.95% 98.96% ➡️ +0.01%
Functions 99.35% 99.35% ➡️ +0.00%
Branches 95.17% 95.12% 📉 -0.05%
📁 Per-file Coverage Changes (2 files)
File Lines (Before → After) Statements (Before → After)
src/sbx-manager.ts 100.0% → 100.0% (+0.00%) 100.0% → 98.4% (-1.56%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (1 files)
  • src/services/agent-volumes/home-whitelist.ts: 100.0% lines

Coverage comparison generated by scripts/ci/compare-coverage.ts

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Claude passed

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Contribution Check completed successfully!

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Copilot BYOK AOAI (api-key) completed. Copilot AOAI BYOK (api-key) mode operational. 🔓

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Security Guard has started processing this pull request

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Gemini completed. All facets verified. 💎

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🛡️ Smoke Copilot Network Isolation confirmed the egress allowlist is enforced. ✅

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🔌 Smoke Services — All services reachable! ✅

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Build Test Suite completed successfully!

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

📡 Smoke OTel Tracing completed. All tracing scenarios validated. ✅

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

📰 DEVELOPING STORY: Smoke Docker Sbx reports failed. Our correspondents are investigating the incident...

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🔑 Smoke Copilot PAT PAT auth validated. All systems operational. ✅

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Copilot BYOK AOAI (Entra) completed. Copilot AOAI BYOK (Entra) mode operational. 🔓

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Chroot tests passed! Smoke Chroot - All security and functionality tests succeeded.

@github-actions

Copy link
Copy Markdown
Contributor

Thanks — the fix and tests look solid. One CONTRIBUTING.md item still seems unmet: Documentation asks contributors to update docs for behavior changes. This PR changes the sandbox home-mount policy in a way users may need to know about, but I don’t see a documentation update in the changed files. If there’s a related issue, linking it in the PR description would also align with the Pull Request Process guidance.

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

Generated by Contribution Check for #6336 · 3.59 AIC · ⊞ 19.2K ·
Add label ready-for-aw to run again

@github-actions

This comment has been minimized.

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Build Test Suite completed successfully!

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🔌 Smoke Services — All services reachable! ✅

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Gemini completed. All facets verified. 💎

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Claude Engine Validation

Check Result
API status ✅ PASS
gh check ✅ PASS
File status ✅ PASS

Overall result: PASS

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

Generated by Smoke Claude for #6336 · 55.6 AIC · ⊞ 3.3K ·
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Copilot BYOK (Direct) Mode ✅ PASS

  • ✅ github.com connectivity (HTTP 200)
  • ✅ File write/read test
  • ✅ BYOK inference path functional
  • ✅ Git repository accessible

Running in direct BYOK mode via api-proxy → api.githubcopilot.com

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

🔑 BYOK report filed by Smoke Copilot BYOK
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

🔬 Smoke Test Results

Test Result
GitHub MCP
github.com HTTP ✅ 200
File Write/Read ⚠️ Template vars not expanded

Author: @lpcox

Overall: PASS

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

📰 BREAKING: Report filed by Smoke Copilot
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke test: Copilot network-isolation egress

EGRESS_RESULT allow=pass deny=pass

✅ Test 1 (allowed domain): api.github.com → HTTP 200
✅ Test 2 (blocked domain): example.com → blocked (403 via proxy)

Overall: PASS@lpcox

Warning

Firewall blocked 2 domains

The following domains were blocked by the firewall during workflow execution:

  • awmgmcpg
  • example.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"
    - "example.com"

See Network Configuration for more information.

🛡️ Egress verdict from Smoke Copilot Network Isolation
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Copilot PAT Auth

Test Result
GitHub MCP connectivity
GitHub.com HTTP ⚠️ template vars unexpanded
File write/read ⚠️ template vars unexpanded

Overall: PARTIAL — pre-step data not injected into prompt.
Auth mode: PAT (COPILOT_GITHUB_TOKEN) | Author: @lpcox

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

🔑 PAT report filed by Smoke Copilot PAT
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke test summary: merged PRs checked, homepage title verified, temp file wrote/read, discussion commented, and build passed. Overall: PASS.

Warning

Firewall blocked 2 domains

The following domains were blocked by the firewall during workflow execution:

  • awmgmcpg
  • registry.npmjs.org

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"
    - "registry.npmjs.org"

See Network Configuration for more information.

🔮 The oracle has spoken through Smoke Codex
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Services Connectivity

  • Redis PING: ❌ (host.docker.internal — name resolution failure; 172.17.0.1 — network unreachable)
  • PostgreSQL pg_isready: ❌ (no response on either host)
  • PostgreSQL SELECT 1: ❌ (connection failed)

Overall: FAIL — service containers are not reachable from this runner environment.

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

🔌 Service connectivity validated by Smoke Services
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

@lpcox

  • GitHub MCP connectivity: ✅ (pre-fetched data validated)
  • GitHub.com connectivity: ✅
  • File write/read test: ✅
  • BYOK inference test: ✅
    Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY + COPILOT_PROVIDER_BASE_URL) via api-proxy → Azure OpenAI (Foundry, o4-mini-aw)
    Overall: PASS

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

🔑 BYOK (AOAI api-key) report filed by Smoke Copilot BYOK AOAI (api-key)
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test Results

  • GitHub MCP Testing: ✅ (Connectivity established)
  • GitHub.com Connectivity: ✅ (HTTP 200)
  • File Writing Testing: ✅
  • Bash Tool Testing: ✅

Overall Status: PASS

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • localhost

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "localhost"

See Network Configuration for more information.

💎 Faceted by Smoke Gemini
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

🪪 BYOK (AOAI Entra) report filed by Smoke Copilot BYOK AOAI (Entra)
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Chroot Version Comparison Results

Runtime Host Version Chroot Version Match?
Python Python 3.12.13 Python 3.12.3 ❌ NO
Node.js v24.18.0 v22.23.1 ❌ NO
Go go1.22.12 go1.22.12 ✅ YES

Overall: ❌ Not all tests passed. Python and Node.js versions differ between host and chroot environments.

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

Tested by Smoke Chroot
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

🏗️ Build Test Suite Results

Ecosystem Project Build/Install Tests Status
Bun elysia 1/1 passed ✅ PASS
Bun hono 1/1 passed ✅ PASS
C++ fmt N/A ✅ PASS
C++ json N/A ✅ PASS
Deno oak N/A 1/1 passed ✅ PASS
Deno std N/A 1/1 passed ✅ PASS
.NET hello-world N/A ✅ PASS
.NET json-parse N/A ✅ PASS
Go color 1/1 passed ✅ PASS
Go env 1/1 passed ✅ PASS
Go uuid 1/1 passed ✅ PASS
Java gson 1/1 passed ✅ PASS
Java caffeine 1/1 passed ✅ PASS
Node.js clsx All passed ✅ PASS
Node.js execa All passed ✅ PASS
Node.js p-limit All passed ✅ PASS
Rust fd 1/1 passed ✅ PASS
Rust zoxide 1/1 passed ✅ PASS

Overall: 8/8 ecosystems passed — ✅ PASS

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

Generated by Build Test Suite for #6336 · 36.8 AIC · ⊞ 6.9K ·
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Smoke Test: Docker Sbx Validation

Test Result
GitHub MCP Connectivity ⚠️ filtered by secrecy policy
GitHub.com HTTP ⚠️ template vars unexpanded
File Write/Read ⚠️ template vars unexpanded

Overall Status: INCONCLUSIVE — pre-agent step outputs were not interpolated into the prompt (template variables like ${{ steps.smoke-data.outputs.* }} were passed as literals). The smoke test infrastructure needs investigation.

📰 BREAKING: Report filed by Smoke Docker Sbx
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: API Proxy OpenTelemetry Tracing

Scenario Result Notes
Module Loading ✅ Pass otel.js loads; isEnabled()=true; 13 exports
Test Suite ✅ Pass 59/59 tests pass across otel.test.js + otel-fanout.test.js
Env Var Forwarding ⚠️ Pending OTEL env vars not yet forwarded in api-proxy-service.ts (expected during development)
Token Tracker Integration ✅ Pass onUsage callback present in token-tracker-http.js
OTEL Diagnostics ⚠️ Pending No spans exported yet; 69 token-usage records exist in conventional tracking

Overall: 3 pass, 2 expected-pending (development in progress)

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • awmgmcpg

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

📡 OTel tracing validated by Smoke OTel Tracing
Add label ready-for-aw to run again

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants