Skip to content

feat: add engine.bare frontmatter field to suppress automatic context loading#25661

Open
Copilot wants to merge 8 commits intomainfrom
copilot/add-engine-bare-field
Open

feat: add engine.bare frontmatter field to suppress automatic context loading#25661
Copilot wants to merge 8 commits intomainfrom
copilot/add-engine-bare-field

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 10, 2026

Adds engine.bare: true/false (default false) to disable automatic loading of instructions and context by the AI engine — useful when you want full control over what the agent sees.

Bare mode is supported by copilot and claude only. Specifying engine.bare: true for an unsupported engine emits a compiler warning and has no effect.

Per-engine behavior

Engine Mechanism What it suppresses
copilot --no-custom-instructions .github/AGENTS.md, user-level custom instructions
claude --bare CLAUDE.md memory files, user configuration
codex (unsupported — warning emitted)
gemini (unsupported — warning emitted)

engine.bare works for both regular (engine: { id: ... }) and inline (engine: { runtime: { id: ... } }) engine definitions.

Usage

---
on: workflow_dispatch
engine:
  id: claude
  bare: true
---

Changes

  • engine.goBare bool field added to EngineConfig + frontmatter parsing (both regular and inline definition paths)
  • agentic_engine.goSupportsBareMode() bool added to CapabilityProvider interface; default false in BaseEngine
  • copilot_engine.gosupportsBareMode: true; injects --no-custom-instructions when bare: true
  • claude_engine.gosupportsBareMode: true; injects --bare when bare: true
  • codex_engine.gosupportsBareMode: false (default); bare mode is ignored at execution level
  • gemini_engine.gosupportsBareMode: false (default); bare mode is ignored at execution level
  • agent_validation.govalidateBareModeSupport() emits a warning when bare: true is used with an engine that does not support it
  • compiler_orchestrator_tools.go — calls validateBareModeSupport() during compilation
  • main_workflow_schema.jsonbare boolean added to both the { id: ... } and inline { runtime: { ... } } engine config schema branches
  • smoke-claude.md / smoke-copilot.md — enabled bare: true on the smoke test workflows


✨ PR Review Safe Output Test - Run 24248606598

💥 THE END] — Illustrated by [Smoke Claude · ● 197.2K ·


Changeset

  • Type: patch
  • Description: Adds a changeset for the new engine.bare frontmatter option that suppresses automatic context loading for supported engines.

Generated by Changeset Generator for issue #25661 ·

Copilot AI and others added 2 commits April 10, 2026 12:48
…loading

- Add `Bare bool` to `EngineConfig` struct in engine.go
- Parse `bare` field in `ExtractEngineConfig`
- copilot: adds `--no-custom-instructions` when bare=true
- claude: adds `--bare` when bare=true
- codex: adds `--no-system-prompt` (global flag, before exec subcommand) when bare=true
- gemini: sets `GEMINI_SYSTEM_MD=/dev/null` env var when bare=true
- Add `bare` boolean property to engine_config JSON schema
- Add unit tests for parsing and per-engine behavior
- Add integration tests for all four engines"

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/d4a44b40-a9c2-494e-ae67-bb4b913258ef

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
@pelikhan pelikhan marked this pull request as ready for review April 10, 2026 14:43
Copilot AI review requested due to automatic review settings April 10, 2026 14:43
@pelikhan pelikhan added the smoke label Apr 10, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

🎬 THE ENDSmoke Claude MISSION: ACCOMPLISHED! The hero saves the day! ✨

@github-actions
Copy link
Copy Markdown
Contributor

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

@github-actions github-actions bot removed the smoke label Apr 10, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

Agent Container Tool Check

Tool Status Version
bash 5.2.21
sh available
git 2.53.0
jq 1.7
yq v4.52.5
curl 8.5.0
gh 2.89.0
node v20.20.2
python3 3.12.3
go 1.24.13
java openjdk 21.0.10
dotnet 10.0.201

Result: 12/12 tools available ✅

Overall Status: PASS

🔧 Tool validation by Agent Container Smoke Test · ● 190.9K ·

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds an engine.bare: true/false frontmatter option (defaulting to false) to suppress each engine’s automatic loading of built-in/system instructions or memory/context sources, by injecting engine-specific CLI flags or environment overrides.

Changes:

  • Extend EngineConfig and frontmatter parsing to support engine.bare.
  • Inject per-engine “bare mode” behavior into Copilot/Claude/Codex/Gemini execution step generation.
  • Add/update unit + integration tests and JSON schema documentation for the new field.
Show a summary per file
File Description
pkg/workflow/engine.go Adds Bare to EngineConfig and parses engine.bare from frontmatter.
pkg/workflow/copilot_engine_execution.go Appends --no-custom-instructions when bare: true.
pkg/workflow/claude_engine.go Appends --bare when bare: true.
pkg/workflow/codex_engine.go Adds --no-system-prompt as a global flag before exec when bare: true; refactors command string reuse.
pkg/workflow/gemini_engine.go Sets GEMINI_SYSTEM_MD=/dev/null when bare: true (unless already set by config).
pkg/workflow/engine_config_test.go Adds unit tests for engine.bare extraction and per-engine args/env injection.
pkg/workflow/engine_args_integration_test.go Adds integration tests verifying compiled YAML includes the expected bare-mode flags/env.
pkg/parser/schemas/main_workflow_schema.json Documents and schemas the new engine.bare boolean field.

Copilot's findings

Tip

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

  • Files reviewed: 8/8 changed files
  • Comments generated: 3

Comment on lines +292 to +298
// Extract optional 'bare' field (disable automatic context/instruction loading)
if bare, hasBare := engineObj["bare"]; hasBare {
if bareBool, ok := bare.(bool); ok {
config.Bare = bareBool
engineLog.Printf("Extracted bare mode: %v", config.Bare)
}
}
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

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

engine.bare is only extracted in the non-inline (engine.id) parsing path. When engine.runtime is used (inline engine definition), ExtractEngineConfig returns early before reaching this block, so bare: true will be silently ignored for inline definitions. If bare mode is intended to work for inline engines too, parse/apply bare before the early return (or in the runtime branch as well) and add a regression test for engine: { runtime: {…}, bare: true }. If it is intentionally unsupported for inline engines, it should be documented and ideally rejected via schema validation to avoid a silent no-op.

Copilot uses AI. Check for mistakes.
Comment on lines +274 to +284
// When bare mode is enabled, set GEMINI_SYSTEM_MD to /dev/null to override the
// built-in system prompt with an empty one. This is the only supported mechanism
// to suppress Gemini CLI's default context loading (no dedicated CLI flag exists).
// engine.env (applied above) takes precedence: if the user explicitly sets
// GEMINI_SYSTEM_MD there, we skip the bare-mode default so their value wins.
if workflowData.EngineConfig != nil && workflowData.EngineConfig.Bare {
geminiLog.Print("Bare mode enabled: setting GEMINI_SYSTEM_MD=/dev/null")
if _, alreadySet := env["GEMINI_SYSTEM_MD"]; !alreadySet {
env["GEMINI_SYSTEM_MD"] = "/dev/null"
}
}
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

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

The comment and behavior here only guard against engine.env overriding the bare-mode default, but agentConfig.Env is merged later and can still overwrite GEMINI_SYSTEM_MD after this block. That makes the stated precedence inaccurate and can also make the log line misleading (it logs "setting" even when it ends up overridden). Consider moving the bare-mode default assignment to after all user-provided env merges (engine.env and agent env), and only logging when the assignment actually happens (or log a distinct "already set; leaving as-is" message).

See below for a potential fix:

	// Add custom environment variables from agent config
	agentConfig := getAgentConfig(workflowData)
	if agentConfig != nil && len(agentConfig.Env) > 0 {
		maps.Copy(env, agentConfig.Env)
		geminiLog.Printf("Added %d custom env vars from agent config", len(agentConfig.Env))
	}

	// When bare mode is enabled, set GEMINI_SYSTEM_MD to /dev/null to override the
	// built-in system prompt with an empty one. This is the only supported mechanism
	// to suppress Gemini CLI's default context loading (no dedicated CLI flag exists).
	// User-provided env values (from engine.env and agent env, both applied above)
	// take precedence: if GEMINI_SYSTEM_MD is already set, leave it unchanged.
	if workflowData.EngineConfig != nil && workflowData.EngineConfig.Bare {
		if _, alreadySet := env["GEMINI_SYSTEM_MD"]; !alreadySet {
			geminiLog.Print("Bare mode enabled: setting GEMINI_SYSTEM_MD=/dev/null")
			env["GEMINI_SYSTEM_MD"] = "/dev/null"
		} else {
			geminiLog.Print("Bare mode enabled: GEMINI_SYSTEM_MD already set; leaving as-is")
		}
	}

Copilot uses AI. Check for mistakes.
Comment on lines +9257 to 9261
"bare": {
"type": "boolean",
"description": "When true, disables automatic loading of context and custom instructions by the AI engine. The engine-specific flag depends on the engine: copilot uses --no-custom-instructions (suppresses .github/AGENTS.md and user-level custom instructions), claude uses --bare (suppresses CLAUDE.md memory files), codex uses --no-system-prompt (suppresses the default system prompt), gemini sets GEMINI_SYSTEM_MD=/dev/null (overrides the built-in system prompt with an empty one). Defaults to false.",
"default": false
}
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

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

Schema adds engine.bare only to the { id: ... } engine config shape. Inline engine definitions (engine: { runtime: { ... } }) still cannot specify bare, and the compiler currently ignores bare for inline definitions as well. If bare mode should be supported uniformly, add bare to the inline-engine schema branch too (and ensure the compiler parses it). Otherwise, consider explicitly documenting this limitation in the schema description to avoid confusing users.

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown
Contributor

Smoke test run 24248606584.
Merged PRs sampled: #25639 fix(smoke-gemini): trigger on "smoke" label instead of "water"; #25636 test: add regression coverage for .github/agents/ root-relative import path.
GitHub MCP ✅
Serena MCP ❌ (EOF on symbol query)
Playwright ✅
Web-fetch ❌ (tool unavailable)
File write/read ✅
Build ✅
Overall: FAIL

🔮 The oracle has spoken through Smoke Codex ·

@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 70/100

⚠️ Acceptable, with suggestions

Metric Value
New/modified tests analyzed 14
✅ Design tests (behavioral contracts) 14 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 7 (50%)
Duplicate test clusters 1
Test inflation detected YES
🚨 Coding-guideline violations 0 (Go mock libraries / missing build tags)

Test Classification Details

View all 14 tests
Test File Classification Issues Detected
TestEngineBareModeCopilotIntegration engine_args_integration_test.go ✅ Design Happy-path only at integration level
TestEngineBareModeClaudeIntegration engine_args_integration_test.go ✅ Design Happy-path only at integration level
TestEngineBareModeCodexIntegration engine_args_integration_test.go ✅ Design Checks flag presence + ordering invariant
TestEngineBareModeGeminiIntegration engine_args_integration_test.go ✅ Design Checks both GEMINI_SYSTEM_MD and /dev/null
TestEngineBareFieldExtraction engine_config_test.go ✅ Design Table-driven; covers default=false edge case
TestEngineBareModeCopilotArgs engine_config_test.go ✅ Design Positive case; companion _NotPresent exists
TestEngineBareModeCopilotArgsNotPresent engine_config_test.go ✅ Design Negative case ✅
TestEngineBareModeClaude engine_config_test.go ✅ Design Positive case
TestEngineBareModeClaude_NotPresent engine_config_test.go ✅ Design Negative case ✅
TestEngineBareModeCodex engine_config_test.go ✅ Design Positive case
TestEngineBareModeCodex_NotPresent engine_config_test.go ✅ Design Negative case ✅
TestEngineBareModeCodex_BeforeExec engine_config_test.go ✅ Design ⚠️ Silent-pass risk — see below
TestEngineBareGemini engine_config_test.go ✅ Design Positive case
TestEngineBareGemini_NotPresent engine_config_test.go ✅ Design Negative case ✅

Flagged Tests — Requires Review

⚠️ TestEngineBareModeCodex_BeforeExec (pkg/workflow/engine_config_test.go)

Classification: Design test with reliability gap
Issue: The ordering check only fires when --no-system-prompt and exec appear on the same line of the compiled YAML. If the codex command spans multiple lines (a common YAML pattern), the inner if condition is never true and the test passes silently with zero assertions — effectively becoming a no-op. This gives false confidence that ordering is validated when it may not be.
What design invariant does this test enforce? --no-system-prompt must be injected as a global flag before the exec subcommand, not after.
What would break if deleted? A regression where --no-system-prompt is placed after exec (which would make it an exec flag instead of a global codex flag) would go undetected if both strings never appear on the same line.
Suggested improvement:

// Collect all step lines, find indices globally across the multi-line content
allContent := strings.Join(allLines, "\n")
noSysPromptIdx := strings.Index(allContent, "--no-system-prompt")
execIdx := strings.Index(allContent, " exec")
if noSysPromptIdx == -1 {
    t.Fatal("Expected --no-system-prompt in execution steps when bare=true")
}
if execIdx == -1 {
    t.Fatal("Expected 'exec' subcommand in codex execution steps")
}
if noSysPromptIdx > execIdx {
    t.Error("Expected --no-system-prompt to come before 'exec' subcommand")
}

i️ Duplicate test pattern — refactoring suggestion (non-blocking)

Pattern: The "positive flag present / negative flag absent" pattern is repeated 4 times (once per engine: copilot, claude, codex, gemini) in engine_config_test.go. This results in 8 near-identical test functions that could be collapsed into one table-driven test over engine ID + expected flag pairs.
Suggested improvement: A table-driven TestEngineBareMode test with rows like {engine: "copilot", bare: true, wantFlag: "--no-custom-instructions"} would reduce ~200 lines of duplicate test code to ~50 and make adding a new engine a one-liner.


i️ Integration tests cover only bare=true (non-blocking)

TestEngineBareModeCopilotIntegration and TestEngineBareModeClaudeIntegration compile with bare: true but do not verify that the flag is absent when bare: false or when bare is omitted. The negative cases are covered at the unit level (_NotPresent tests), so this is not a gap that would hide a regression — but adding a bare: false compilation check to at least one integration test would provide end-to-end confidence.


Score Breakdown

Component Weight Score Notes
Behavioral Coverage 40 pts 40/40 100% design tests
Error/Edge Case Coverage 30 pts 15/30 7/14 tests include negative or edge cases
Low Duplication 20 pts 15/20 1 duplicate cluster (8 near-identical engine×flag tests)
Proportional Growth 10 pts 0/10 Test inflation: 449 test lines added vs ~43 production lines (≈10:1)

Note on inflation: The high ratio is understandable — the feature adds a single Bare bool field to EngineConfig, but tests must cover each engine (copilot, claude, codex, gemini) × mode (true, false) × level (unit, integration). The inflation flag is applied mechanically per the rubric, not as a quality concern.


Language Support

Tests analyzed:

  • 🐹 Go (*_test.go): 14 tests — integration (//go:build integration: 4) and unit (//go:build !integration: 10)
  • 🟨 JavaScript (*.test.cjs, *.test.js): 0 tests

Verdict

Check passed. 0% of new tests are implementation tests (threshold: 30%). No coding-guideline violations detected. All 14 tests verify observable behavioral contracts. The one reliability concern (TestEngineBareModeCodex_BeforeExec) is a test effectiveness issue but not a correctness one.


📖 Understanding Test Classifications

Design Tests (High Value) verify what the system does:

  • Assert on observable outputs, return values, or state changes
  • Cover error paths and boundary conditions
  • Would catch a behavioral regression if deleted
  • Remain valid even after internal refactoring

Implementation Tests (Low Value) verify how the system does it:

  • Assert on internal function calls (mocking internals)
  • Only test the happy path with typical inputs
  • Break during legitimate refactoring even when behavior is correct
  • Give false assurance: they pass even when the system is wrong

Goal: Shift toward tests that describe the system's behavioral contract — the promises it makes to its users and collaborators.

🧪 Test quality analysis by Test Quality Sentinel · ● 878.8K ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

✅ Test Quality Sentinel: 70/100. Test quality is acceptable — 0% of new tests are implementation tests (threshold: 30%). All 14 new tests verify behavioral contracts across 4 engines (copilot, claude, codex, gemini) with correct build tags and no mock-library violations. One minor reliability gap flagged in TestEngineBareModeCodex_BeforeExec — see the detailed comment for a suggested fix.

@github-actions
Copy link
Copy Markdown
Contributor

Smoke Test Run §24248606598

Core: ✅1 ✅2 ✅3 ✅4 ✅5 ✅6 ✅7 ✅8 ✅9 ✅10 ✅11 ✅12
PR Review: ✅13 ✅14 ✅15 ⚠️16 ✅17 ✅18 ⚠️19

Overall: PARTIAL (2 skipped — thread resolve & close PR, 0 failed)

💥 [THE END] — Illustrated by Smoke Claude · ● 197.2K ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

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!

💥 [THE END] — Illustrated by Smoke Claude · ● 197.2K

// Add --bare when bare mode is enabled to suppress automatic loading of memory
// files (CLAUDE.md, ~/.claude/) and other context injections.
if workflowData.EngineConfig != nil && workflowData.EngineConfig.Bare {
claudeLog.Print("Bare mode enabled: adding --bare")
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.

The --bare flag placement looks correct — added before custom args, which is the right order for Claude CLI. One minor nit: the log message says "adding --bare" but it might be clearer to say "suppressing CLAUDE.md context via --bare" to match the intent documented in the schema description.

Args []string
Agent string // Agent identifier for copilot --agent flag (copilot engine only)
APITarget string // Custom API endpoint hostname (e.g., "api.acme.ghe.com" or "api.enterprise.githubcopilot.com")
Bare bool // When true, disables automatic loading of context/instructions (copilot: --no-custom-instructions, claude: --bare, codex: --no-system-prompt, gemini: GEMINI_SYSTEM_MD=/dev/null)
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.

The inline comment on Bare is comprehensive and cross-references all four engines — good for maintainers discovering this field later. Consider also adding a reference to the frontmatter schema so readers can find the user-facing docs from the struct definition.

@github-actions
Copy link
Copy Markdown
Contributor

🤖 Smoke test run §24248606547PASS

Test
GitHub MCP
MCP Scripts CLI
Serena MCP
Playwright
Web Fetch
File Writing + Bash
Discussion Interaction
Build gh-aw
Artifact Upload
Discussion Creation
Workflow Dispatch
PR Review

cc @pelikhan

📰 BREAKING: Report filed by Smoke Copilot · ● 1.1M ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

PR adds engine.bare to suppress automatic context loading across all four engines. Implementation is clean and consistent. One style note on codex_engine.go re: trailing-space string concatenation vs. slice append — see inline comment. No blocking issues.

📰 BREAKING: Report filed by Smoke Copilot · ● 1.1M

// Add --bare when bare mode is enabled to suppress automatic loading of memory
// files (CLAUDE.md, ~/.claude/) and other context injections.
if workflowData.EngineConfig != nil && workflowData.EngineConfig.Bare {
claudeLog.Print("Bare mode enabled: adding --bare")
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.

Nice clean implementation! The nil-guard workflowData.EngineConfig != nil is consistent with the pattern used for Args below. One minor observation: the debug log here uses claudeLog.Print (without f), which is fine for a static string. The pattern is consistent across engines. ✅

bareGlobalParam := ""
if workflowData.EngineConfig != nil && workflowData.EngineConfig.Bare {
codexEngineLog.Print("Bare mode enabled: adding --no-system-prompt")
bareGlobalParam = "--no-system-prompt "
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.

The bareGlobalParam string uses a trailing space as a separator ("--no-system-prompt "). This is a bit fragile — if the format string ever changes, a stray space or a double-space could appear. Consider appending "--no-system-prompt" as a separate element in a slice, consistent with how claudeArgs handles this in claude_engine.go.

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

Commit pushed: 2a7770c

Generated by Changeset Generator

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot set smoke-claude and smoke-copilot to bare

…ng, add to smoke workflows

- Parse engine.bare in inline engine definition path (engine.runtime) too
- Move Gemini GEMINI_SYSTEM_MD bare-mode assignment to after all env merges (engine.env and agent env) so user values properly take precedence
- Add bare field to inline engine schema branch
- Add bare: true to smoke-claude and smoke-copilot workflows
- Add regression test TestExtractEngineConfig_InlineDefinition_Bare

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/14c9b981-728b-42d6-b04f-01581ae788d0

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 10, 2026

@copilot set smoke-claude and smoke-copilot to bare

Done in 21d5061 — added bare: true to both smoke-claude and smoke-copilot workflows. Also fixed a few issues found in review: bare now works for inline engine definitions (engine.runtime path), the Gemini GEMINI_SYSTEM_MD assignment is moved to after all env merges (so engine.env and agent env properly take precedence), and the schema's inline engine branch now includes the bare field.

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:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GOMOD GOMODCACHE go env _v7O/ttPvKZZp56gGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 3003582/b364/impGO111MODULE (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha 1EAo/NRcGrzy5F8GGOINSECURE GO111MODULE $name) { hasDiscussionsEnabled } } GOINSECURE GOMOD GOMODCACHE 3003582/b415/impGOPROXY -c che/go-build/56/GOSUMDB GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.8/xGO111MODULE (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha zwHo/8VgORXSa_MHGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 3003582/b423/impGOPROXY /hom�� che/go-build/b1/GOSUMDB **/*.cjs 64/bin/go **/*.json --ignore-path ../../../.pretti/home/REDACTED/work/gh-aw/gh-aw/.github/workflows /opt/hostedtoolcconfig (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env iew.lock.yml GO111MODULE r: $owner, name: $name) { hasDiscussionsEnabled } } GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha -json GOMOD 64/bin/go -d (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot

Remove changes for codex, Gemini. Show warning as unsupported instead.

Add function to agentic engine interface to determine if supported.

…/gemini with warning

- Add SupportsBareMode() bool to CapabilityProvider interface
- Add supportsBareMode field and SupportsBareMode() default (false) to BaseEngine
- Set supportsBareMode: true on copilot (--no-custom-instructions) and claude (--bare)
- Remove bare mode implementation from codex (--no-system-prompt) and gemini (GEMINI_SYSTEM_MD)
- Add validateBareModeSupport() to agent_validation.go: warns when bare is set on an unsupported engine
- Call validateBareModeSupport from compiler_orchestrator_tools.go
- Update tests: remove codex/gemini bare tests, add SupportsBareMode capability tests and unsupported engine warning integration tests

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/f70330b6-ea05-4f4d-9826-9246f777333d

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 10, 2026

@copilot

Remove changes for codex, Gemini. Show warning as unsupported instead....

Done in 69d6b96. Removed bare mode implementations for codex and gemini. Added SupportsBareMode() bool to the CapabilityProvider interface (default false in BaseEngine), with true set on copilot and claude. When engine.bare: true is specified for an unsupported engine, validateBareModeSupport() now emits a warning and the setting is ignored.

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:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw rt (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw bracelet/x/exp/grev-parse (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha h ../../../.pret.prettierignore .cfg $name) { hasDiscussionsEnabled } } (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha h ../../../.prettierignore .cfg x_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility -unreachable=fal-f /tmp/go-build393owner=github 1/x64/lib/node_m-f (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha se 2396982/b006/vet.cfg 64/pkg/tool/linux_amd64/vet (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot merge main, recompile, fix conflicts

…re-field

# Conflicts:
#	pkg/workflow/codex_engine.go

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 10, 2026

@copilot merge main, recompile, fix conflicts

Done in 6f64905. Merged origin/main, resolved the conflict in codex_engine.go (kept the codexCommand refactoring while incorporating main's (umask 177 && touch %s) security fix), and recompiled all 187 workflow files.

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:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw rvm35a4x (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw rt/yaml (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha h ../../../.pret.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha h ../../../.prettierignore (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility 9962152/b063/_pk-f committer.email h (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot merge main, fix conflicts, recompile

…re-field

# Conflicts:
#	pkg/workflow/codex_engine.go

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 10, 2026

@copilot merge main, fix conflicts, recompile

Done in e376357. Merged origin/main, resolved the conflict in codex_engine.go (adopted main's simplified non-AWF path that drops the agent-file awk handling, since Codex doesn't support native agent files and the compiler now prepends agent content to prompt.txt), and recompiled all 187 workflow files.

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:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw b/gh-aw/pkg/testshow (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw bagabas/go-udiff-C (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha h ../../../.pret.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha h ../../../.prettierignore (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility --local committer.name h (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha (http block)

If you need me to access, download, or install something from one of these locations, you can either:

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.

3 participants