Conversation
|
The script that generates the full frontmatter markdown doc file should ignore fields marked as deprecated or internal. |
|
@copilot configuring these fields should be treated as an error in strict mode. The sandbox field cannot be customized when strict mode is enabled. |
…ation sections These are now implementation/debugging details and should not be publicly documented. Removes: - Custom AWF Configuration section (command, args, env overrides) - Custom Mounts subsection (sandbox.agent.mounts) - MCP Gateway Configuration Options table (command, container, etc.) - Dangling reference to sandbox.agent.mounts in Filesystem Access Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4b4f1db3-8b63-420c-b13a-644990344883
…idate in strict mode - Add "x-internal": true to agent sandbox (command, args, env) and MCP gateway (container, version, entrypoint, args, entrypointArgs) fields in the JSON schema - Update generate-schema-docs.js to skip x-internal fields (analogous to deprecated field handling) - Add validateStrictSandboxCustomization() that errors when internal sandbox fields are used in strict mode - Call the new validation from the compiler orchestrator - Set strict: false on smoke test workflows that legitimately use internal sandbox fields - Add strict: false to existing test fixtures that use internal fields - Add tests for the new strict mode sandbox validation Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> Agent-Logs-Url: https://github.com/github/gh-aw/sessions/693539a7-68f3-40fe-a2fa-df98eb6d9e13
Done in commit d18ef23. Added
Done in commit d18ef23. Added Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot merge main and recompile |
There was a problem hiding this comment.
Pull request overview
This PR removes internal/debug-only sandbox configuration details from public documentation and enforces that boundary by blocking internal sandbox customization fields when strict mode is enabled.
Changes:
- Hides internal sandbox/MCP gateway execution fields from generated schema docs via
x-internal: true. - Adds strict-mode compilation validation to reject internal sandbox customization fields, plus targeted unit tests.
- Updates docs and internal workflows/tests to avoid exposing/using internal fields in strict mode (opt out with
strict: falsewhere needed).
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
scripts/generate-schema-docs.js |
Skips x-internal schema properties during doc generation. |
pkg/workflow/strict_mode_sandbox_validation.go |
Adds strict-mode validation that rejects internal sandbox customization fields. |
pkg/workflow/strict_mode_sandbox_validation_test.go |
Adds unit tests covering strict/non-strict behavior for internal sandbox fields. |
pkg/workflow/compiler_orchestrator_engine.go |
Invokes the new strict sandbox customization validation during compilation. |
pkg/parser/schemas/main_workflow_schema.json |
Marks specific sandbox/MCP fields as x-internal: true in the schema. |
docs/src/content/docs/reference/sandbox.md |
Removes public documentation for internal AWF and MCP gateway execution customization. |
docs/src/content/docs/reference/frontmatter-full.md |
Regenerates the full frontmatter reference; internal fields are no longer included. |
pkg/workflow/sandbox_custom_agent_test.go |
Opts test fixtures using internal AWF customization out of strict mode. |
pkg/workflow/mcp_gateway_entrypoint_mounts_e2e_test.go |
Opts MCP gateway e2e tests using internal fields out of strict mode. |
.github/workflows/smoke-copilot.md |
Sets strict: false for internal smoke workflow that configures internal MCP container fields. |
.github/workflows/smoke-copilot.lock.yml |
Regenerated lock file reflecting strict: false. |
.github/workflows/smoke-copilot-arm.md |
Sets strict: false for ARM smoke workflow using internal MCP container fields. |
.github/workflows/smoke-copilot-arm.lock.yml |
Regenerated lock file reflecting strict: false. |
.github/workflows/smoke-codex.md |
Sets strict: false for smoke workflow using internal MCP container fields. |
.github/workflows/smoke-codex.lock.yml |
Regenerated lock file reflecting strict: false. |
.github/workflows/smoke-claude.md |
Sets strict: false for smoke workflow using internal MCP container fields. |
.github/workflows/smoke-claude.lock.yml |
Regenerated lock file reflecting strict: false. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
scripts/generate-schema-docs.js
Outdated
| // Skip internal-only properties (marked with "x-internal": true in the schema). | ||
| // These are implementation/debugging details not intended for end users. | ||
| if (resolvedProp["x-internal"] === true) { |
There was a problem hiding this comment.
The doc generator now skips properties marked x-internal: true, but the schema still has at least one x-internal field that is also required (sandbox.mcp.container). Skipping a required field produces an invalid/misleading YAML example in frontmatter-full.md (users can’t satisfy required schema fields from the generated docs). Consider either (a) ensuring x-internal fields are never required in the public schema, or (b) teaching the generator to still render required x-internal fields (possibly with an internal-only warning) so the output remains schema-valid.
| // Skip internal-only properties (marked with "x-internal": true in the schema). | |
| // These are implementation/debugging details not intended for end users. | |
| if (resolvedProp["x-internal"] === true) { | |
| // Skip internal-only properties (marked with "x-internal": true in the schema), | |
| // but only when they are not required. Required internal fields are still rendered | |
| // so that the generated YAML examples remain schema-valid. | |
| if (resolvedProp["x-internal"] === true && !required.includes(propName)) { |
| "container": { | ||
| "type": "string", | ||
| "x-internal": true, | ||
| "pattern": "^[a-zA-Z0-9][a-zA-Z0-9/:_.-]*$", | ||
| "description": "Container image for the MCP gateway executable (required)" | ||
| }, |
There was a problem hiding this comment.
sandbox.mcp.container is now marked x-internal: true, but the MCP schema still declares it as required (required: ["container"]). This creates a conflict: strict mode rejects sandbox.mcp.container, the public docs generator hides it, and schema validation will fail for workflows that set sandbox.mcp.port/api-key without container (as shown in docs/reference/sandbox.md). If the compiler supplies a default container/version, the schema should not require container (or should allow an object without it) so user-facing configs can validate.
|
|
||
| # Option 3: Set to false to disable the default checkout step. The agent job will | ||
| # not check out any repository (dev-mode checkouts are unaffected). | ||
| checkout: true |
There was a problem hiding this comment.
The checkout documentation for the boolean-disable option is inconsistent: the comment says "Set to false to disable" but the example shown is checkout: true. This appears to come from the schema-doc generator always emitting true for boolean variants; it should respect const: false/default for that variant so the generated reference is correct.
| checkout: true | |
| checkout: false |
|
@copilot merge main recompile review comments |
…-awf-mcp-docs # Conflicts: # docs/src/content/docs/reference/frontmatter-full.md
Done in commit 17ec838. Merged main, resolved the conflict in the generated Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
…oolean variant docs Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e4724ceb-85c4-4356-a097-03d500ec8c60
Done in commit 75ff699. Addressed all three reviewer comments:
Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot review errors in CI / Integration Add with dispatch-workflow Dependencies (pull_request)Failing after 50s |
…er; update pinned commit Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> Agent-Logs-Url: https://github.com/github/gh-aw/sessions/a3dc739a-cc65-422c-bfa3-73b3eeca1a83
Fixed in commit b7eff91. All three CI failures had the same root cause — test workflows using
|
Custom AWF ConfigurationandCustom MCP Gateway Configurationare implementation/debugging details that should not be publicly exposed. Removes them from the sandbox reference docs and enforces this boundary in strict mode.Changes
#### Custom AWF Configuration—command,args,envfields for replacing the AWF binary with a custom setup##### Custom Mounts—sandbox.agent.mountsdocumentation### Configuration Options(MCP Gateway) — entire table + execution mode examples (command,container,version,entrypointArgs, etc.)sandbox.agent.mountsin the Filesystem Access sectionx-internalmarker — added"x-internal": trueto the internal agent sandbox fields (command,args,env) and MCP gateway fields (container,version,entrypoint,args,entrypointArgs) inpkg/parser/schemas/main_workflow_schema.jsonscripts/generate-schema-docs.jsto skipx-internal: truefields when generating the frontmatter reference doc, analogous todeprecated: truehandlingvalidateStrictSandboxCustomizationinpkg/workflow/strict_mode_sandbox_validation.go; configuring any internal sandbox field is now a compilation error in strict mode (the default). Internal workflows and test fixtures that legitimately use these fields opt out withstrict: false.💬 Send tasks to Copilot coding agent from Slack and Teams to turn conversations into code. Copilot posts an update in your thread when it's finished.