diff --git a/.github/workflows/issue-classifier.lock.yml b/.github/workflows/issue-classifier.lock.yml index c6293c0108..f0aeaeef41 100644 --- a/.github/workflows/issue-classifier.lock.yml +++ b/.github/workflows/issue-classifier.lock.yml @@ -400,7 +400,7 @@ jobs: const awInfo = { engine_id: "custom", engine_name: "Custom Steps", - model: process.env. || "", + model: process.env.GH_AW_MODEL_AGENT_CUSTOM || "", version: "", agent_version: "", workflow_name: "Issue Classifier", diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 19f182c8f7..4f4c2cfb47 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -1808,6 +1808,8 @@ jobs: env: GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }} GH_AW_SAFE_OUTPUTS_STAGED: "true" + GH_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN || secrets.GH_AW_GITHUB_TOKEN }} + GITHUB_AW_AGENT_SESSION_BASE: "main" with: github-token: ${{ secrets.COPILOT_GITHUB_TOKEN || secrets.GH_AW_GITHUB_TOKEN }} script: | diff --git a/actions/setup/js/create_agent_session.cjs b/actions/setup/js/create_agent_session.cjs index 2eb51ffe8d..26905d8b9f 100644 --- a/actions/setup/js/create_agent_session.cjs +++ b/actions/setup/js/create_agent_session.cjs @@ -81,6 +81,13 @@ async function main() { const baseBranch = process.env.GITHUB_AW_AGENT_SESSION_BASE || process.env.GITHUB_REF_NAME || "main"; const targetRepo = process.env.GITHUB_AW_TARGET_REPO; + // Get GH_TOKEN for gh CLI authentication + const ghToken = process.env.GH_TOKEN; + if (!ghToken) { + core.setFailed("GH_TOKEN environment variable is required for gh CLI authentication"); + return; + } + // Process all agent session items const createdTasks = []; let summaryContent = "## ✅ Agent Sessions Created\n\n"; @@ -119,6 +126,7 @@ async function main() { taskOutput = await exec.getExecOutput("gh", ghArgs, { silent: false, ignoreReturnCode: false, + env: { ...process.env, GH_TOKEN: ghToken }, }); } catch (execError) { const errorMessage = execError instanceof Error ? execError.message : String(execError); diff --git a/pkg/workflow/compiler_safe_outputs_specialized.go b/pkg/workflow/compiler_safe_outputs_specialized.go index 7f63477b0c..c0f271f9b3 100644 --- a/pkg/workflow/compiler_safe_outputs_specialized.go +++ b/pkg/workflow/compiler_safe_outputs_specialized.go @@ -59,6 +59,23 @@ func (c *Compiler) buildCreateAgentSessionStepConfig(data *WorkflowData, mainJob var customEnvVars []string customEnvVars = append(customEnvVars, c.buildStepLevelSafeOutputEnvVars(data, "")...) + // Add GH_TOKEN environment variable for gh CLI authentication + // Get the safe-outputs token (if configured) or use top-level token + var safeOutputsToken string + if data.SafeOutputs != nil { + safeOutputsToken = data.SafeOutputs.GitHubToken + } + // Use Copilot token chain: customToken > safeOutputsToken > data.GitHubToken > COPILOT_GITHUB_TOKEN || GH_AW_GITHUB_TOKEN + effectiveToken := getEffectiveCopilotGitHubToken(cfg.GitHubToken, getEffectiveCopilotGitHubToken(safeOutputsToken, data.GitHubToken)) + customEnvVars = append(customEnvVars, fmt.Sprintf(" GH_TOKEN: %s\n", effectiveToken)) + + // Add GITHUB_AW_AGENT_SESSION_BASE environment variable + if cfg.Base != "" { + customEnvVars = append(customEnvVars, fmt.Sprintf(" GITHUB_AW_AGENT_SESSION_BASE: %q\n", cfg.Base)) + } else { + customEnvVars = append(customEnvVars, " GITHUB_AW_AGENT_SESSION_BASE: ${{ github.ref_name }}\n") + } + condition := BuildSafeOutputType("create_agent_session") return SafeOutputStepConfig{