feat: migrate 6 daily workflows to opencode, crush, and goose engines - #50557
Conversation
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Note
Copilot could not run the full agentic suite for this review because it was automatically requested on a bot-authored pull request. Request a review from Copilot under Reviewers to retry with the full agentic suite. Improved support for bot-authored pull requests is coming soon.
This PR migrates several GitHub Agentic Workflows from the legacy claude engine to newer engines (goose, crush, opencode) while updating permissions/imports and regenerating lockfiles accordingly.
Changes:
- Switch workflow frontmatter to
engine.id+model(Copilot model) and addcopilot-requests: writewhere needed. - Add engine-specific shared imports (e.g.,
shared/goose.md,shared/crush.md,shared/opencode.md) and network allowlists. - Regenerate lock workflows to use Goose/Crush harness + MCP config adapters and remove Claude-specific steps/secrets.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/daily-token-consumption-report.md | Move to Goose engine + Copilot model; add copilot-requests permission and goose import/network allowlist. |
| .github/workflows/daily-team-evolution-insights.md | Move to Goose engine + Copilot model; add copilot-requests permission and goose import. |
| .github/workflows/daily-team-evolution-insights.lock.yml | Regenerated lockfile to run via Goose harness, new MCP adapter, updated permissions/env/telemetry fields. |
| .github/workflows/daily-security-red-team.md | Move to OpenCode engine + Copilot model; add network allowlist and opencode import; tool config changed. |
| .github/workflows/daily-reliability-review.md | Move to OpenCode engine + Copilot model; add network allowlist and opencode import. |
| .github/workflows/daily-code-metrics.md | Move to Crush engine + Copilot model; add copilot-requests permission and crush import. |
| .github/workflows/daily-arxiv-researcher.md | Move to Crush engine + Copilot model; add copilot-requests permission and crush import. |
| .github/workflows/daily-arxiv-researcher.lock.yml | Regenerated lockfile to run via Crush harness + MCP adapter; removed Claude + memory-related jobs/steps. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 7/12 changed files
- Comments generated: 7
- Review effort level: Lite
| GH_AW_INFO_EXPERIMENTAL: "true" | ||
| GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "false" | ||
| GH_AW_INFO_STAGED: "false" | ||
| GH_AW_INFO_ALLOWED_DOMAINS: '["*.grafana.net","*.sentry.io","defaults","github"]' | ||
| GH_AW_INFO_FIREWALL_ENABLED: "true" | ||
| GH_AW_INFO_AWF_VERSION: "v0.27.43" | ||
| GH_AW_INFO_FIREWALL_ENABLED: "false" | ||
| GH_AW_INFO_AWF_VERSION: "" |
| const installDir = mkdtempSync(join(tmpdir(), "goose-")); | ||
| const archive = join(installDir, "goose.tar.gz"); | ||
| const releaseURL = "https://github.com/aaif-goose/goose/releases/download/v1.45.0/goose-x86_64-unknown-linux-gnu.tar.gz"; | ||
| const checksum = "e0db638ac437ca0a60b0c1622f45322608d228d1a285214c3bf48fd9763346a5"; |
| if (createHash("sha256").update(readFileSync(archive)).digest("hex") !== checksum) { | ||
| throw new Error("Goose download checksum did not match"); | ||
| } | ||
| fail(spawnSync("tar", ["-xzf", archive, "-C", installDir], { stdio: "inherit" }), "Goose extraction"); |
| } | ||
|
|
||
| const prompt = readFileSync(process.env.GH_AW_PROMPT, "utf8"); | ||
| fail(spawnSync(join(installDir, command), [...commandArgs, "run", "--no-session", ...extensions, "-t", prompt], { stdio: "inherit", env }), "Goose execution"); |
| const gatewayOutput = JSON.parse(fs.readFileSync(gatewayOutputPath, "utf8")); | ||
| const rawServers = gatewayOutput.mcpServers; | ||
| const servers = rawServers && typeof rawServers === "object" && !Array.isArray(rawServers) ? rawServers : {}; |
| GH_AW_INFO_EXPERIMENTAL: "true" | ||
| GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "false" | ||
| GH_AW_INFO_STAGED: "false" | ||
| GH_AW_INFO_ALLOWED_DOMAINS: '["defaults"]' | ||
| GH_AW_INFO_FIREWALL_ENABLED: "true" | ||
| GH_AW_INFO_AWF_VERSION: "v0.27.43" | ||
| GH_AW_INFO_FIREWALL_ENABLED: "false" | ||
| GH_AW_INFO_AWF_VERSION: "" |
| const gatewayOutput = JSON.parse(fs.readFileSync(gatewayOutputPath, "utf8")); | ||
| const rawServers = gatewayOutput.mcpServers; | ||
| const servers = rawServers && typeof rawServers === "object" && !Array.isArray(rawServers) ? rawServers : {}; |
|
✅ Excellent work on the engine migration trial! This PR successfully assigns experimental CLI engines (opencode, crush, and goose) to 6 daily workflows, which is exactly the kind of focused infrastructure update that keeps gh-aw testing and improving its agentic capabilities. What's particularly strong here:
Notes for future similar migrations: The PR is ready for review and appears to follow all contribution guidelines for this agentic-first project. Great collaboration! 🚀 Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "patchdiff.githubusercontent.com"See Network Configuration for more information.
|
|
🎉 This pull request is included in a new release. Release: |
Assigns experimental CLI engines to 6 daily workflows as a trial, replacing
engine: claudewith opencode, crush, or goose and wiring the required shared definitions, model, and permissions.Engine assignments
opencodedaily-reliability-review,daily-security-red-teamcrushdaily-arxiv-researcher,daily-code-metricsgoosedaily-team-evolution-insights,daily-token-consumption-reportChanges per workflow
engine.idset to target enginemodel: copilot/claude-sonnet-4.5added (required by all three engines)imports: shared/<engine>.mdprepended to existing importspermissions.copilot-requests: writeadded where missing (crush, goose)network.allowed: [defaults, github]added where missing (opencode, goose)