Skip to content

Run safe-outputs MCP in the gh-aw node container#39100

Merged
pelikhan merged 11 commits into
mainfrom
copilot/configure-safe-outputs-mcp-server
Jun 16, 2026
Merged

Run safe-outputs MCP in the gh-aw node container#39100
pelikhan merged 11 commits into
mainfrom
copilot/configure-safe-outputs-mcp-server

Conversation

Copilot AI commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

This changes safe-outputs from a separately started HTTP sidecar into a first-class MCP server entry. The generated workflow now runs safe-outputs inside the gh-aw-node container with write access to the workspace, safe-outputs runtime files, and the safe-outputs log directory.

  • What changed

    • Replaced the generated safe-outputs HTTP server config with a containerized stdio MCP server definition.
    • Added a dedicated published container constant for ghcr.io/github/gh-aw-node.
    • Mounted the required writable paths directly into the MCP server:
      • workspace
      • ${RUNNER_TEMP}/gh-aw/safeoutputs
      • /tmp/gh-aw/mcp-logs/safeoutputs
  • Workflow generation

    • Removed the dedicated “generate safe-outputs server config” / “start safe-outputs HTTP server” flow.
    • Kept safe-outputs runtime file generation (config.json, tools.json) but made those files inputs to the MCP container instead of a host-side server process.
    • Dropped the now-unused safe-outputs port/API-key wiring from generated env and gateway setup.
  • MCP server model

    • Safe-outputs is now emitted alongside the rest of the MCP server list instead of being bootstrapped out-of-band.
    • The generated MCP entry passes through the runtime env needed by the JS implementation (workspace, runner temp, safe-outputs config/tools paths, log dir, repo context).
  • Generated shape

    {
      "safeoutputs": {
        "container": "ghcr.io/github/gh-aw-node",
        "mounts": [
          "${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE}:rw",
          "${RUNNER_TEMP}/gh-aw/safeoutputs:${RUNNER_TEMP}/gh-aw/safeoutputs:rw",
          "/tmp/gh-aw/mcp-logs/safeoutputs:/tmp/gh-aw/mcp-logs/safeoutputs:rw"
        ],
        "args": ["-w", "${GITHUB_WORKSPACE}"]
      }
    }
  • Related updates

    • Updated renderer and setup-generation expectations to reflect stdio container transport instead of HTTP transport.
    • Refreshed the affected golden outputs and focused MCP/safe-outputs workflow expectations.

Changeset\n\n- Type: patch\n- Description: Run safe-outputs as a containerized MCP server inside the runtime instead of a separate HTTP sidecar.

Generated by 📋 Changeset Generator for issue #39100 · 13.6 AIC · ⊞ 14.8K ·



✨ PR Review Safe Output Test - Run 27471836462

Warning

Firewall blocked 6 domains

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

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

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

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

💥 [THE END] — Illustrated by Smoke Claude · 84.9 AIC · ⌖ 7.94 AIC · ⊞ 8.1K ·



✨ PR Review Safe Output Test - Run 27515525875

Warning

Firewall blocked 6 domains

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

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

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

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

💥 [THE END] — Illustrated by Smoke Claude · 103.8 AIC · ⌖ 30.1 AIC · ⊞ 8.1K ·



✨ PR Review Safe Output Test - Run 27630426713

Warning

Firewall blocked 6 domains

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

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

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

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

💥 [THE END] — Illustrated by Smoke Claude · 80.6 AIC · ⌖ 30.4 AIC · ⊞ 8.1K ·

Copilot AI changed the title Configure safe-outputs MCP in gh-aw node container Run safe-outputs MCP in the gh-aw node container Jun 13, 2026
Copilot AI requested a review from pelikhan June 13, 2026 15:42
@pelikhan pelikhan marked this pull request as ready for review June 13, 2026 16:04
Copilot AI review requested due to automatic review settings June 13, 2026 16:04
@pelikhan pelikhan added the smoke label Jun 13, 2026
@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

💫 TO BE CONTINUED... Smoke Claude failed to deliver outputs! Our hero faces unexpected challenges...

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🚀 Smoke Antigravity MISSION COMPLETE! Antigravity has spoken. ✨

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Design Decision Gate 🏗️ failed to deliver outputs during design decision gate check.

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel completed test quality analysis.

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

✅ All tools validated successfully! Agent Container Smoke Test confirms agent container is ready.

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

⚠️ Smoke Gemini failed. Gemini encountered unexpected challenges...

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🚀 Smoke Pi MISSION COMPLETE! Pi delivered. 🥧

@github-actions

github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🌑 The shadows whisper... Smoke Codex failed to deliver outputs. The oracle requires further meditation...

@github-actions

Copy link
Copy Markdown
Contributor

📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing...

@github-actions

Copy link
Copy Markdown
Contributor

📰 BREAKING: Smoke Copilot - AOAI (Entra) is now investigating this pull request. Sources say the story is developing...

@github-actions

Copy link
Copy Markdown
Contributor

📰 BREAKING: Smoke Copilot - AOAI (apikey) is now investigating this pull request. Sources say the story is developing...

@github-actions

This comment has been minimized.

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

⚠️ Smoke Gemini failed. Gemini encountered unexpected challenges...

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

✅ All tools validated successfully! Agent Container Smoke Test confirms agent container is ready.

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

🚀 Smoke Pi MISSION COMPLETE! Pi delivered. 🥧

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

💫 TO BE CONTINUED... Smoke Claude failed to deliver outputs! Our hero faces unexpected challenges...

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

🚀 Smoke Antigravity MISSION COMPLETE! Antigravity has spoken. ✨

@github-actions

Copy link
Copy Markdown
Contributor

📰 BREAKING: Smoke Copilot is now investigating this pull request. Sources say the story is developing...

@github-actions

Copy link
Copy Markdown
Contributor

📰 BREAKING: Smoke Copilot - AOAI (apikey) is now investigating this pull request. Sources say the story is developing...

@github-actions

Copy link
Copy Markdown
Contributor

Agent Container Tool Check

Tool Status Version
bash 5.2.21
sh available
git 2.54.0
jq 1.7
yq 4.53.3
curl 8.5.0
gh 2.93.0
node 22.22.3
python3 3.11.15 (PyPy 7.3.23)
go 1.24.13
java 21.0.11
dotnet 10.0.300

Result: 12/12 tools available ✅

Overall Status: PASS

🔧 Tool validation by Agent Container Smoke Test · 40.4 AIC · ⌖ 12.8 AIC · ⊞ 28.2K ·

@github-actions

Copy link
Copy Markdown
Contributor

Smoke test: PASS\n- [39555] chore(deps): bump dompurify from 3.4.0 to 3.4.10 in /docs in the npm_and_yarn group across 1 directory ✅\n- [39550] [spec-enforcer] Enforce specifications for cli, console, constants ✅\n- Overall status: PASS

Warning

Firewall blocked 6 domains

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

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

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

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

🔮 The oracle has spoken through Smoke Codex · 29.2 AIC · ⌖ 14.3 AIC · ⊞ 10.3K ·

@github-actions

Copy link
Copy Markdown
Contributor

Comment Memory

Smoke drifts through the logs
Quiet tools keep score tonight
GitHub keeps its name

Note

This comment is managed by comment memory.

It stores persistent context for this thread in the code block at the top of this comment.
Edit only the text inside the backtick fences; workflow metadata and the footer are regenerated automatically.

Learn more about comment memory

Warning

Firewall blocked 6 domains

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

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

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

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

🔮 The oracle has spoken through Smoke Codex · 29.2 AIC · ⌖ 14.3 AIC · ⊞ 10.3K ·

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Smoke Test: Claude — Run 27630426713

Core #1-12: 1✅ 2✅ 3✅ 4✅ 5✅ 6✅ 7✅ 8✅ 9✅ 10✅ 11✅ 12✅
PR Review #13-19: 13✅ 14✅ 15✅ 16✅ 17✅ 18❌(tool: detached-HEAD/env unavailable) 19⚠️(skipped)

Overall: PARTIAL — push_to_pull_request_branch failed (infra limitation), #19 skipped.

Warning

Firewall blocked 6 domains

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

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

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

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

💥 [THE END] — Illustrated by Smoke Claude · 80.6 AIC · ⌖ 30.4 AIC · ⊞ 8.1K ·

@github-actions github-actions Bot 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.

💥 Automated smoke test review - all systems nominal!

Warning

Firewall blocked 6 domains

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

  • accounts.google.com
  • android.clients.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

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

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "android.clients.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

💥 [THE END] — Illustrated by Smoke Claude · 80.6 AIC · ⌖ 30.4 AIC · ⊞ 8.1K

@@ -0,0 +1,5 @@
---

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.

Smoke test review: consider clarifying the changeset summary headline here.

@@ -0,0 +1,5 @@
---
"gh-aw": patch
---

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.

Smoke test review: ensure this line documents the container behavior change.

@github-actions

Copy link
Copy Markdown
Contributor
  • GitHub MCP PR list: ✅
  • mcpscripts PR query: ✅
  • Serena CLI symbol find: ❌
  • Playwright CLI screenshot: ❌
  • Web fetch (curl): ✅
  • File write & read: ✅
  • Discussion query: ❌
  • Build: ✅

Overall status: FAIL

@app/copilot-swe-agent @pelikhan @Copilot

📰 BREAKING: Report filed by Smoke Copilot - AOAI (apikey) · 143.4 AIC · ⌖ 7.64 AIC · ⊞ 18.4K ·

@github-actions

Copy link
Copy Markdown
Contributor

PR: Run safe-outputs MCP in the gh-aw node container
1❌ 2✅ 3✅ 4✅ 5❌
6✅ 7❌ 8✅ 9✅ 10✅
11✅ 12✅ 13✅ 14✅ 15✅
Overall: FAIL
Author: app/copilot-swe-agent
Assignees: pelikhan, Copilot

Warning

Firewall blocked 5 domains

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

  • accounts.google.com
  • clients2.google.com
  • contentautofill.googleapis.com
  • safebrowsingohttpgateway.googleapis.com
  • www.google.com

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

network:
  allowed:
    - defaults
    - "accounts.google.com"
    - "clients2.google.com"
    - "contentautofill.googleapis.com"
    - "safebrowsingohttpgateway.googleapis.com"
    - "www.google.com"

See Network Configuration for more information.

📰 BREAKING: Report filed by Smoke Copilot · 417.2 AIC · ⌖ 15.8 AIC · ⊞ 19.4K ·

@pelikhan pelikhan merged commit ce429bf into main Jun 16, 2026
219 of 221 checks passed
@pelikhan pelikhan deleted the copilot/configure-safe-outputs-mcp-server branch June 16, 2026 16:23
dsyme added a commit that referenced this pull request Jun 16, 2026
…config

PR #39100 introduced the containerized stdio transport for safeoutputs but
hardcoded ${GITHUB_WORKSPACE}/actions/setup/js/safe_outputs_mcp_server.cjs
as the entrypoint. This path only exists in the gh-aw repo's own workspace.

For consumer repos (e.g. github-automation), GITHUB_WORKSPACE is that repo's
checkout which does not contain actions/setup/js/. The gateway container
gets MODULE_NOT_FOUND, crashes with EOF on initialize, and registers 0 tools.
The agent then spends ~30 minutes trying to discover the tool schema before
failing.

Fix: use ${RUNNER_TEMP}/gh-aw/safeoutputs/safe_outputs_mcp_server.cjs —
setup.sh already copies the file there and that directory is mounted rw.

Recompile all 249 lock files.

Observed in: https://github.com/github/github-automation/actions/runs/27647012218
dsyme added a commit that referenced this pull request Jun 16, 2026
…39689)

* fix: restore MCP CLI concept explanation and fix safeoutputs framing (#39684)

- Restore concept explanation to mcp_cli_tools_prompt.md that was
  stripped by PR #36778: servers are CLI executables on PATH, not MCP
  tools; include usage example and JSON stdin mode
- Fix safe_outputs_prompt.md line 2: 'safeoutputs MCP server tools'
  → 'safeoutputs CLI tool' to match the CLI framing
- Update prompts.go comment to match

* fix: use RUNNER_TEMP path for safe_outputs_mcp_server.cjs in gateway config

PR #39100 introduced the containerized stdio transport for safeoutputs but
hardcoded ${GITHUB_WORKSPACE}/actions/setup/js/safe_outputs_mcp_server.cjs
as the entrypoint. This path only exists in the gh-aw repo's own workspace.

For consumer repos (e.g. github-automation), GITHUB_WORKSPACE is that repo's
checkout which does not contain actions/setup/js/. The gateway container
gets MODULE_NOT_FOUND, crashes with EOF on initialize, and registers 0 tools.
The agent then spends ~30 minutes trying to discover the tool schema before
failing.

Fix: use ${RUNNER_TEMP}/gh-aw/safeoutputs/safe_outputs_mcp_server.cjs —
setup.sh already copies the file there and that directory is mounted rw.

Recompile all 249 lock files.

Observed in: https://github.com/github/github-automation/actions/runs/27647012218

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <[email protected]>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <[email protected]>

* fix: update integration tests for RUNNER_TEMP safeoutputs path

* commit tweaks

* fix: update remaining tests for RUNNER_TEMP safeoutputs path

---------

Co-authored-by: Copilot Autofix powered by AI <[email protected]>
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.

4 participants