Skip to content

Skip write permissions for staged safe output handlers#21903

Merged
pelikhan merged 7 commits intomainfrom
copilot/ignore-staged-safe-output-write-access
Mar 20, 2026
Merged

Skip write permissions for staged safe output handlers#21903
pelikhan merged 7 commits intomainfrom
copilot/ignore-staged-safe-output-write-access

Conversation

Copy link
Contributor

Copilot AI commented Mar 20, 2026

Staged safe output handlers only emit step summary previews — they make no real GitHub API calls and therefore need no write permissions. ComputePermissionsForSafeOutputs was incorrectly merging write permissions for staged handlers regardless.

Changes

  • safe_outputs_permissions.go: Added isHandlerStaged(globalStaged, handlerStaged bool) bool helper; gates every permission merge in ComputePermissionsForSafeOutputs behind !isHandlerStaged(...), covering both the global safeOutputs.Staged flag and per-handler BaseSafeOutputConfig.Staged. When all handlers are staged and no permissions are accumulated, returns NewPermissionsEmpty() so the compiled safe_outputs job renders an explicit permissions: {} block rather than omitting it (which would inherit from the workflow-level permissions).
  • safe_outputs_runtime.go: Updated usesPatchesAndCheckouts to return false when all PR handlers (create-pull-request, push-to-pull-request-branch) are effectively staged — preventing unnecessary checkout/git steps from being added for staged-only configs.
  • safe_outputs_permissions_test.go: Added TestComputePermissionsForSafeOutputs_Staged covering global staged, per-handler staged, mixed staged/non-staged, and the multi-handler PR review operations case, with YAML rendering assertions verifying permissions: {} for fully-staged configs. Added TestComputePermissionsForSafeOutputs_StagedYAMLRendering for dedicated YAML rendering coverage.
  • safe_outputs_config_helpers_test.go: Added staged test cases to TestUsesPatchesAndCheckouts covering globally staged, per-handler staged, and mixed staged/non-staged PR handlers.
  • pkg/cli/workflows/test-staged-permissions-global.md: New integration test workflow with global staged: true across multiple handler types.
  • pkg/cli/workflows/test-staged-permissions-per-handler.md: New integration test workflow with per-handler staged: true mixed with a non-staged handler.
  • pkg/cli/compile_integration_test.go: Added TestCompileStagedSafeOutputsPermissionsGlobal, TestCompileStagedSafeOutputsPermissionsPerHandler, and TestCompileStagedSafeOutputsPermissionsAllHandlersStaged to verify that the compiled lock file's safe_outputs job contains no write permissions for staged scenarios.

Behavior

safe-outputs:
  staged: true          # global — all handlers staged, no write permissions granted
  create-issue: {}

safe-outputs:
  create-pull-request:
    staged: true        # per-handler — only this handler skipped; others still get write perms
  add-labels: {}

With these configs, ComputePermissionsForSafeOutputs now returns explicit empty permissions (permissions: {}) for fully-staged configs, and omits only the staged handler's contribution when mixing staged and non-staged handlers. When all PR handlers are staged, usesPatchesAndCheckouts returns false so no checkout steps are injected. The integration tests confirm this is reflected correctly in the compiled lock file's permissions: block — for example, poem-bot.lock.yml's safe_outputs job now renders permissions: {} explicitly.

Original prompt

When computing the required permissions for a safe outputs, you should ignore treat the safe output marked as staged as "read" only. Since they are marked as staged, they do not need "write" access.


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.



✨ PR Review Safe Output Test - Run 23330853717

Note

🔒 Integrity filtering filtered 2 items

Integrity filtering activated and filtered the following items during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.

💥 [THE END] — Illustrated by Smoke Claude ·

Copilot AI and others added 2 commits March 20, 2026 04:28
…Outputs

When a safe output handler is marked as staged (either globally via
safeOutputs.Staged or per-handler via BaseSafeOutputConfig.Staged),
it only emits preview output and does not make real GitHub API calls.
Therefore, such handlers should not contribute write permissions.

- Add isHandlerStaged() helper to check staged state
- Modify ComputePermissionsForSafeOutputs to skip permission merges
  for staged handlers
- Add TestComputePermissionsForSafeOutputs_Staged with 8 test cases

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/faa27e25-cf6d-4c9f-84d7-d56982dd015b
Copilot AI changed the title [WIP] Update permissions for staged safe outputs Skip write permissions for staged safe output handlers Mar 20, 2026
Copilot AI requested a review from pelikhan March 20, 2026 04:38
@pelikhan pelikhan marked this pull request as ready for review March 20, 2026 04:40
Copilot AI review requested due to automatic review settings March 20, 2026 04:40
Copy link
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

Updates safe-output permission computation so staged handlers (global or per-handler) don’t contribute write permissions, aligning permissions with “preview-only” staged behavior.

Changes:

  • Add isHandlerStaged(globalStaged, handlerStaged) helper and use it to skip permission merges for staged handlers in ComputePermissionsForSafeOutputs.
  • Add staged-mode test cases covering global staged, per-handler staged, mixed staged/non-staged, and PR review operations.
  • Update the smoke-codex.lock.yml dynamic tool schema and step inputs for adding the “smoked” label.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
pkg/workflow/safe_outputs_permissions.go Skips permission merges for handlers that are effectively staged (global/per-handler).
pkg/workflow/safe_outputs_permissions_test.go Adds coverage for staged permission computation scenarios.
.github/workflows/smoke-codex.lock.yml Tightens dynamic tool schema and changes action inputs to labels/number parsed from JSON payload.

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

Comment on lines 117 to 137
@@ -118,23 +131,23 @@ func ComputePermissionsForSafeOutputs(safeOutputs *SafeOutputsConfig) *Permissio
permissions.Merge(NewPermissionsContentsWritePRWrite())
}
}
if safeOutputs.PushToPullRequestBranch != nil {
if safeOutputs.PushToPullRequestBranch != nil && !isHandlerStaged(safeOutputs.Staged, safeOutputs.PushToPullRequestBranch.Staged) {
safeOutputsPermissionsLog.Print("Adding permissions for push-to-pull-request-branch")
permissions.Merge(NewPermissionsContentsWritePRWrite())
}
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

Skipping permission merges for staged create-pull-request / push-to-pull-request-branch removes even contents: read, but the safe_outputs job still adds actions/checkout + git setup steps whenever these handlers are configured (see usesPatchesAndCheckouts + buildSharedPRCheckoutSteps). With workflow-level permissions: {} this means secrets.GITHUB_TOKEN will have no scopes and the checkout step (and create_pull_request’s pre-preview checkoutManager.switchTo) can fail, preventing staged previews from running unless a separate PAT secret is configured. Consider either (a) keeping the minimal read permissions needed for staged PR handlers (e.g., contents: read and any required read scopes), or (b) skipping the checkout/git steps when the effective handler is staged so the job can run with no token permissions.

See below for a potential fix:

	if safeOutputs.CreatePullRequests != nil {
		if isHandlerStaged(safeOutputs.Staged, safeOutputs.CreatePullRequests.Staged) {
			// Staged create-pull-request still requires minimal read permissions so that
			// checkout/git operations (e.g., pre-preview checkout) can succeed even when
			// the workflow uses permissions: {} at the top level.
			safeOutputsPermissionsLog.Print("Adding minimal read permissions for staged create-pull-request")
			permissions.Merge(NewPermissionsContentsRead())
		} else {
			// Check fallback-as-issue setting to determine permissions
			if getFallbackAsIssue(safeOutputs.CreatePullRequests) {
				safeOutputsPermissionsLog.Print("Adding permissions for create-pull-request with fallback-as-issue")
				permissions.Merge(NewPermissionsContentsWriteIssuesWritePRWrite())
			} else {
				safeOutputsPermissionsLog.Print("Adding permissions for create-pull-request")
				permissions.Merge(NewPermissionsContentsWritePRWrite())
			}
		}
	}
	if safeOutputs.PushToPullRequestBranch != nil {
		if isHandlerStaged(safeOutputs.Staged, safeOutputs.PushToPullRequestBranch.Staged) {
			// Staged push-to-pull-request-branch still requires minimal read permissions
			// so the shared checkout/git steps can run with a token that has contents: read.
			safeOutputsPermissionsLog.Print("Adding minimal read permissions for staged push-to-pull-request-branch")
			permissions.Merge(NewPermissionsContentsRead())
		} else {
			safeOutputsPermissionsLog.Print("Adding permissions for push-to-pull-request-branch")
			permissions.Merge(NewPermissionsContentsWritePRWrite())
		}
	}

Copilot uses AI. Check for mistakes.
Comment on lines +574 to +693
func TestComputePermissionsForSafeOutputs_Staged(t *testing.T) {
tests := []struct {
name string
safeOutputs *SafeOutputsConfig
expected map[PermissionScope]PermissionLevel
}{
{
name: "global staged=true - no permissions for any handler",
safeOutputs: &SafeOutputsConfig{
Staged: true,
CreateIssues: &CreateIssuesConfig{},
CreateDiscussions: &CreateDiscussionsConfig{},
AddLabels: &AddLabelsConfig{},
},
expected: map[PermissionScope]PermissionLevel{},
},
{
name: "per-handler staged=true - staged handler contributes no permissions",
safeOutputs: &SafeOutputsConfig{
CreateIssues: &CreateIssuesConfig{
BaseSafeOutputConfig: BaseSafeOutputConfig{Staged: true},
},
AddLabels: &AddLabelsConfig{},
},
// create-issue is staged so it contributes nothing; add-labels is not staged
expected: map[PermissionScope]PermissionLevel{
PermissionContents: PermissionRead,
PermissionIssues: PermissionWrite,
PermissionPullRequests: PermissionWrite,
},
},
{
name: "all handlers per-handler staged - no permissions",
safeOutputs: &SafeOutputsConfig{
CreateIssues: &CreateIssuesConfig{
BaseSafeOutputConfig: BaseSafeOutputConfig{Staged: true},
},
CreateDiscussions: &CreateDiscussionsConfig{
BaseSafeOutputConfig: BaseSafeOutputConfig{Staged: true},
},
},
expected: map[PermissionScope]PermissionLevel{},
},
{
name: "global staged=true overrides per-handler staged=false",
safeOutputs: &SafeOutputsConfig{
Staged: true,
CreatePullRequests: &CreatePullRequestsConfig{
BaseSafeOutputConfig: BaseSafeOutputConfig{Staged: false},
},
DispatchWorkflow: &DispatchWorkflowConfig{},
},
expected: map[PermissionScope]PermissionLevel{},
},
{
name: "global staged=false, one handler staged=true",
safeOutputs: &SafeOutputsConfig{
Staged: false,
CreatePullRequests: &CreatePullRequestsConfig{
BaseSafeOutputConfig: BaseSafeOutputConfig{Staged: true},
},
CloseIssues: &CloseIssuesConfig{},
},
// create-pull-request is staged; close-issue is not
expected: map[PermissionScope]PermissionLevel{
PermissionContents: PermissionRead,
PermissionIssues: PermissionWrite,
},
},
{
name: "global staged=true - upload-asset staged, no contents:write",
safeOutputs: &SafeOutputsConfig{
Staged: true,
UploadAssets: &UploadAssetsConfig{},
},
expected: map[PermissionScope]PermissionLevel{},
},
{
name: "pr review operations - all staged via global flag",
safeOutputs: &SafeOutputsConfig{
Staged: true,
CreatePullRequestReviewComments: &CreatePullRequestReviewCommentsConfig{},
SubmitPullRequestReview: &SubmitPullRequestReviewConfig{},
},
expected: map[PermissionScope]PermissionLevel{},
},
{
name: "pr review operations - one staged, one not",
safeOutputs: &SafeOutputsConfig{
CreatePullRequestReviewComments: &CreatePullRequestReviewCommentsConfig{
BaseSafeOutputConfig: BaseSafeOutputConfig{Staged: true},
},
SubmitPullRequestReview: &SubmitPullRequestReviewConfig{},
},
// submit-pull-request-review is not staged, so PR write permissions are added
expected: map[PermissionScope]PermissionLevel{
PermissionContents: PermissionRead,
PermissionPullRequests: PermissionWrite,
},
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
permissions := ComputePermissionsForSafeOutputs(tt.safeOutputs)
require.NotNil(t, permissions, "Permissions should not be nil")

// Check that all expected permissions are present
for scope, expectedLevel := range tt.expected {
actualLevel, exists := permissions.Get(scope)
assert.True(t, exists, "Permission scope %s should exist", scope)
assert.Equal(t, expectedLevel, actualLevel, "Permission level for %s should match", scope)
}

// Check that no unexpected permissions are present
for scope := range permissions.permissions {
_, expected := tt.expected[scope]
assert.True(t, expected, "Unexpected permission scope: %s", scope)
}
})
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

The staged-permissions tests assert the internal permissions map is empty, but they don’t validate the YAML rendering/behavior of “no permissions” vs. “explicit empty permissions”. Since job-level permissions are omitted when empty, it would be safer to add assertions around RenderToYAML() for staged scenarios to ensure the workflow ends up with the intended permissions configuration (especially given the workflow-level permissions: {} behavior).

Copilot uses AI. Check for mistakes.
"payload": {
"description": "JSON-encoded payload to pass to the action",
"labels": {
"description": "The labels' name to be added. Must be separated with line breaks if there're multiple labels.",
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

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

Grammar in the tool input schema description is off (e.g., “The labels' name … if there're multiple labels”). Consider rephrasing for clarity (e.g., “Label names to add. Separate multiple labels with newlines.”).

Suggested change
"description": "The labels' name to be added. Must be separated with line breaks if there're multiple labels.",
"description": "Label names to add. Separate multiple labels with newlines.",

Copilot uses AI. Check for mistakes.
@pelikhan
Copy link
Contributor

@copilot add integration tests in pkg/cli/workflows

…ssions

- Add test-staged-permissions-global.md: workflow with global staged:true
- Add test-staged-permissions-per-handler.md: workflow with per-handler staged:true
- Add TestCompileStagedSafeOutputsPermissionsGlobal: verifies no write permissions
  when safe-outputs.staged=true globally
- Add TestCompileStagedSafeOutputsPermissionsPerHandler: verifies only non-staged
  handlers contribute write permissions
- Add TestCompileStagedSafeOutputsPermissionsAllHandlersStaged: verifies no write
  permissions when all handlers are individually staged

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/1afcbdcd-09a8-4d0b-b876-34a29e28d315
Copy link
Contributor Author

Copilot AI commented Mar 20, 2026

@copilot add integration tests in pkg/cli/workflows

Added in commit 9efbae8:

New workflow files in pkg/cli/workflows/:

  • test-staged-permissions-global.md — global staged: true with create-issue, add-labels, create-discussion
  • test-staged-permissions-per-handler.md — per-handler staged: true on create-issue alongside non-staged add-labels

New integration tests in pkg/cli/compile_integration_test.go:

  • TestCompileStagedSafeOutputsPermissionsGlobal — compiles a workflow with global staged: true and verifies the lock file has no issues: write, discussions: write, pull-requests: write, or contents: write in the safe_outputs job
  • TestCompileStagedSafeOutputsPermissionsPerHandler — compiles a workflow where only create-issue is staged and add-labels is not; verifies add-labels' issues: write + pull-requests: write are present but discussions: write / contents: write are absent
  • TestCompileStagedSafeOutputsPermissionsAllHandlersStaged — all handlers per-handler staged; verifies no write permissions appear

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/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha json&#39; --ignore-path ../../../.pr**/*.json (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha json&#39; --ignore-p-errorsas (http block)

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

Copilot AI requested a review from pelikhan March 20, 2026 04:59
@pelikhan
Copy link
Contributor

22 links across blog posts, guides, and setup pages were missing
trailing slashes, causing the Starlight link validator to fail the
Doc Build CI job. Add trailing slashes to:
- /gh-aw/setup/creating-workflows -> /gh-aw/setup/creating-workflows/
- /gh-aw/guides/agentic-authoring -> /gh-aw/guides/agentic-authoring/
- /gh-aw/agent-factory-status -> /gh-aw/agent-factory-status/

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/79f8e4d7-5e14-498f-9e1e-3d0fbfd1b3ea
Copy link
Contributor Author

Copilot AI commented Mar 20, 2026

@copilot fix https://github.com/github/gh-aw/actions/runs/23329734608/job/67858683699#step:7:1

Fixed in commit eadce7b. The Doc Build was failing because 22 internal links in blog posts and docs pages were missing trailing slashes (required by the Starlight link validator). Added trailing slashes to /gh-aw/setup/creating-workflows, /gh-aw/guides/agentic-authoring, and /gh-aw/agent-factory-status.

Copy link
Contributor

@pelikhan pelikhan left a comment

Choose a reason for hiding this comment

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

@copilot set permissions "read" for

- agent
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (needs.agent.outputs.detection_success == 'true')
runs-on: ubuntu-slim
permissions:
Copy link
Contributor

Choose a reason for hiding this comment

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

@copilot set permissions to empty of none

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fixed in commit f799c0c. The safe_outputs job in poem-bot.lock.yml now has explicit permissions: {} (line 1488). This was done by:

  1. Updating ComputePermissionsForSafeOutputs to return NewPermissionsEmpty() (renders as permissions: {}) when all handlers are staged
  2. Updating usesPatchesAndCheckouts to return false when all PR handlers are staged, so no checkout steps are added for staged-only workflows

Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks for confirming! The explicit permissions: {} approach is the right call here. 🤖 (Smoke test agent checking in — all systems go!)

Note

🔒 Integrity filtering filtered 1 item

Integrity filtering activated and filtered the following item during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.

📰 BREAKING: Report filed by Smoke Copilot

@github-actions

This comment has been minimized.

@github-actions
Copy link
Contributor

Hey @Copilot 👋 — great work on fixing the staged safe-output permissions bug! The core logic in pkg/workflow/safe_outputs_permissions.go is clean, the isHandlerStaged helper is clear and well-placed, and the test coverage (unit + integration) is thorough across all three staged scenarios (global, per-handler, all-staged). The lock-file regeneration confirming the fix in practice is also a nice touch.

One thing to tighten up before this fully crosses the finish line:

  • Unfocused diff — the PR bundles 25 unrelated blog-doc changes (adding a trailing slash to /gh-aw/setup/creating-workflows/gh-aw/setup/creating-workflows/ and similar links) across all the docs/src/content/docs/blog/ files. These are entirely independent of the staged-permissions fix and make review noisier. Ideally they'd live in their own PR.

If you'd like a hand splitting that out, here's a ready-to-use prompt:

Create a separate, focused pull request that contains only the trailing-slash URL fixes
from PR #21903. Specifically, move all changes to files matching
docs/src/content/docs/blog/**/*.md that replace internal links like
  /gh-aw/setup/creating-workflows
with their trailing-slash equivalents
  /gh-aw/setup/creating-workflows/
into a new branch (e.g., fix/docs-trailing-slash-links) and open a PR against main.
The new PR should contain no other changes from #21903.

Generated by Contribution Check ·

- usesPatchesAndCheckouts: respect staged status for create-pull-request
  and push-to-pull-request-branch, returning false when all PR handlers
  are staged (no checkout/git steps added for staged-only configs)
- ComputePermissionsForSafeOutputs: return NewPermissionsEmpty() when
  safe_outputs is configured but all handlers are staged, so the compiled
  safe_outputs job renders "permissions: {}" explicitly
- Tests: add staged cases to TestUsesPatchesAndCheckouts, add YAML
  rendering assertions to TestComputePermissionsForSafeOutputs_Staged,
  add TestComputePermissionsForSafeOutputs_StagedYAMLRendering
- Recompile: poem-bot.lock.yml safe_outputs job now has permissions: {}

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/d9d7cf59-7cee-4a99-8c2d-a04ad9fa45a9
Copy link
Contributor Author

Copilot AI commented Mar 20, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

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 LpV5HTA3kpHF (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 or_workflow.go t_branch_validat/home/REDACTED/work/gh-aw/gh-aw/.github/workflows 64/pkg/tool/linurev-parse (http block)
  • https://api.github.com/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name 4441855/b403/_pkGOINSECURE GO111MODULE 64/bin/go GOINSECURE bagabas/go-udiffenv GOMODCACHE go env TMZq/ffkCVWcA1pyGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 4441855/b403/impGOPROXY (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name --show-toplevel go /usr/bin/git -json GO111MODULE /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel GOPROXY /opt/hostedtoolcache/go/1.25.0/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name --show-toplevel bash /usr/bin/git /usr/bin/git git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions-ecosystem/action-add-labels/contents/action.yaml
    • Triggering command: /usr/bin/gh gh api /repos/actions-ecosystem/action-add-labels/contents/action.yaml?ref=18f1af5e3544586314bbe15c0273249c770b2daf --jq .content --local user.name 64/pkg/tool/linu-f (http block)
  • https://api.github.com/repos/actions-ecosystem/action-add-labels/contents/action.yml
    • Triggering command: /usr/bin/gh gh api /repos/actions-ecosystem/action-add-labels/contents/action.yml?ref=18f1af5e3544586314bbe15c0273249c770b2daf --jq .content --local user.name 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha --show-toplevel 4441855/b425/impGOPROXY /usr/bin/git k/gh-aw/gh-aw/pkgit k/gh-aw/gh-aw/pkrev-parse 64/bin/go git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.0/xGO111MODULE /usr/bin/git /tmp/go-build399git -trimpath 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha /tmp/gh-aw-test-runs/20260320-053616-36827/test-2309386097 rev-parse /usr/bin/git @{u} git /usr/bin/git git rev-�� --show-toplevel git /opt/hostedtoolcache/node/24.14.0/x64/bin/node ay_c2170246185/0git git /usr/bin/git node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel 64/pkg/tool/linurev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha -json GO111MODULE /usr/bin/bash GOINSECURE GOMOD GOMODCACHE bash --no�� --noprofile GOPROXY /home/REDACTED/.cargo/bin/bash GOSUMDB GOWORK 64/bin/go bash (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha t0 git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha user.email test@example.com /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha &#34;prettier&#34; --cheGOSUMDB GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcrev-parse -V=f�� de/node/bin/bash-json sh 64/bin/go &#34;prettier&#34; --wrigit ache/go/1.25.0/xrev-parse 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --get (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel 64/pkg/tool/linux_amd64/compile /usr/bin/gh -json GO111MODULE ache/go/1.25.0/x--show-toplevel gh run view 12345 /usr/bin/git nonexistent/repogit --json status,conclusio--show-toplevel git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --show-toplevel go /usr/bin/git f-GF/qbxfFo4g7fPgit GO111MODULE 64/bin/go git -C /tmp/gh-aw-test-runs/20260320-053412-30773/test-923607617 rev-parse /usr/bin/git k/gh-aw/gh-aw/tmgit GOPROXY 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha --show-toplevel go om/testorg/testrepo.git -json GO111MODULE 64/bin/go git -C /tmp/gh-aw-test-runs/20260320-053412-30773/test-2183498446 config /usr/bin/git remote.origin.urgit GOPROXY 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha GOMODCACHE 64/pkg/tool/linux_amd64/asm /usr/bin/git -json GO111MODULE ache/go/1.25.0/x--show-toplevel git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE ache/go/1.25.0/x--show-toplevel git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha 3795587/b076/_pkg_.a (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha se 3795587/b009/vet.cfg .cfg l_workflow_permibash _comments_test.g--norc m_member_test.go--noprofile ache/go/1.25.0/x64/pkg/tool/linuconfig (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha se 3795587/b018/vet.cfg 64/pkg/tool/linux_amd64/vet l_workflow_permibash _comments_test.g--norc m_member_test.go--noprofile 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha /tmp/gh-aw-test-runs/20260320-053412-30773/test-3704396233/.github/workflows config /usr/bin/git remote.origin.urgit GO111MODULE 64/bin/go git rev-�� --show-toplevel 4441855/b407/impGOPROXY /usr/bin/git 01 k/gh-aw/gh-aw/pkrev-parse 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha k/gh-aw/gh-aw/.github/workflows/audit-workflows.md origin /usr/bin/git --show-toplevel git /usr/bin/git git log --oneline -1 /usr/bin/git --show-toplevel git /opt/hostedtoolc--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha /tmp/gh-aw-test-runs/20260320-053412-30773/test-3704396233/.github/workflows l /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel sh /usr/bin/git &#34;prettier&#34; --chegit GOPROXY 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha user.name Test User ache/node/24.14.0/x64/bin/node --show-toplevel /tmp/go-build749rev-parse /usr/bin/git ache/node/24.14.0/x64/bin/node 1446�� -m Test commit (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha copilot/ignore-sremote.origin.url .cfg $name) { hasDiscussionsEnabled } } (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha copilot/ignore-staged-safe-outpu--format=%H:%ct .cfg $name) { hasDiscussionsEnabled } } (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha tags/v5 GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env itattributes-test2663870256/.github/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha 92760/b422/mathutil.test git 92760/b422/importcfg.link --show-toplevel go x86_64/node NVNgnGPLEQds7/eMdwFO3cBOLj36ZOwlHC/wPHmRHH07drGotDxh6_4/9rUbv3kN-trimpath js/f�� ry=1 git 92760/b422/_pkg_.a --show-toplevel go /usr/bin/git node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha --show-toplevel ache/node/24.14.0/x64/bin/node /usr/bin/git -m Test commit (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 (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .visibility --local user.name 64/pkg/tool/linu-f (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha -json tsPR|TestCompileOutputs /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha ache/go/1.25.0/x--show-toplevel git /opt/hostedtoolcache/node/24.14.0/x64/bin/node --show-toplevel go /usr/bin/git node js/f�� TOKEN&#34;; }; f get TOKEN&#34;; }; f get /opt/hostedtoolcache/node/24.14.0/x64/bin/node --show-toplevel go /usr/bin/git node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha : git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env /actions/secrets GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha ache/go/1.25.0/x--show-toplevel git Name,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --show-toplevel go /usr/bin/git node js/f�� runs/20260320-053616-36827/test-2904209173/custom/workflows git 0/x64/bin/node --show-toplevel go /usr/bin/git node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha export GOROOT=&#34;/tmp/TestGetNpmBinPathSetup_GorootOrdering3173216564/001/go/1.25.0/x64&#34;; export Pgit /usr/lib/git-core/git /usr/bin/git run --auto /opt/hostedtoolc--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet /usr/bin/git -unreachable=falgit /tmp/go-build604rev-parse /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 git 0/x64/bin/node --show-toplevel Zh1RvWr/_l73oel9rev-parse /usr/bin/git git rev-�� --show-toplevel git x_amd64/link --show-toplevel systemd-tmpfilesrev-parse /usr/bin/git x_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 git 0/x64/bin/node --show-toplevel go /usr/bin/git git rev-�� --show-toplevel git 0/x64/bin/node --show-toplevel go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 git /usr/bin/git --show-toplevel git /usr/bin/infocmp--show-toplevel git rev-�� --show-toplevel infocmp /usr/bin/git xterm-color git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 git 0/x64/bin/node eadce7b2c27d go /usr/bin/git git rev-�� ut1827353983/001-errorsas git 0/x64/bin/node --show-toplevel go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� tags/v5 git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE At,event,headBranch,headSha,displayTitle GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 git 0/x64/bin/node --get remote.origin.urrev-parse /usr/bin/git git rev-�� ithub/workflows git 0/x64/bin/node --show-toplevel go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 3412-30773/test-3704396233/.github/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 git 0/x64/bin/node -lang=go1.24 go /usr/bin/git git rev-�� --show-toplevel git 0/x64/bin/node --show-toplevel go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 git 0/x64/bin/node --get remote.origin.ur/tmp/js-hash-test-1012523415/test-hash.js /usr/bin/git git rev-�� --show-toplevel ROOT&#34; ] &amp;&amp; expo 0/x64/bin/node --get remote.origin.urrev-parse /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 git 0/x64/bin/node --show-toplevel go /usr/bin/git git rev-�� ithub/workflows git 0/x64/bin/node --show-toplevel go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path 4441855/b409/_pkGOINSECURE GO111MODULE 64/bin/go GOINSECURE b/gh-aw/pkg/envuenv GOMODCACHE go env w-re/ruSCoY1xUz3GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 4441855/b409/impGOPROXY (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 unsafe 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha e=false GO111MODULE 64/bin/go GOINSECURE %H %ct %D 43758a9779e3334b-json go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha --show-toplevel git /usr/bin/git 64/bin/go /opt/hostedtoolcrev-parse /usr/bin/docker git rev-�� --show-toplevel docker 0/x64/bin/node r/repo.git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha --show-toplevel ache/go/1.25.0/x64/pkg/tool/linux_amd64/compile /usr/bin/git 92760/b001/_pkg_git git 92760/b001=&gt; git rev-�� --show-toplevel node /usr/bin/git uf8F/fTqbgsVX7BRgit git /opt/hostedtoolc--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha /tmp/go-build3994441855/b414/_pkGOINSECURE -trimpath 64/bin/go -p github.com/githurev-parse -lang=go1.25 go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha --show-toplevel /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/compile /usr/bin/git GOPATH l /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel ache/go/1.25.0/x-C /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha --show-toplevel git /usr/bin/git (.*\)$/\2/p /usr/bin/git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha /tmp/go-build3994441855/b427/_pkGOINSECURE -trimpath 64/bin/go -p github.com/githu-C -lang=go1.25 go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha /tmp/go-build3994441855/b435/_pkGOINSECURE -trimpath 64/bin/go -p main -lang=go1.25 go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha 64/pkg/tool/linu--repo node 64/bin/go --write **/*.cjs 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha --show-toplevel /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linustatus /usr/bin/git GOPATH GOPROXY /usr/bin/infocmp/tmp/go-build60492760/b402/_pkg_.a git rev-�� --show-toplevel infocmp /usr/bin/git xterm-color ache/go/1.25.0/xrev-parse /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel gh /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel /usr/bin/git /usr/bin/git git (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)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha --show-toplevel git x_amd64/vet 64/bin/go /opt/hostedtoolcrev-parse ps x_amd64/vet rev-�� --show-toplevel ps 0/x64/bin/node t go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha --show-toplevel ache/go/1.25.0/x64/pkg/tool/linux_amd64/compile /usr/bin/git SameOutput570302git git 92760/b387=&gt; git rev-�� --show-toplevel node /usr/bin/git licyMinIntegritygit git /opt/hostedtoolc--show-toplevel git (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.0/x64/pkg/tool/linux_amd64/asm GOINSECURE GOMOD GOMODCACHE ache/go/1.25.0/x64/pkg/tool/linux_amd64/asm (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion --show-toplevel go /usr/bin/git git arne�� --show-toplevel git /usr/bin/git /tmp/gh-aw-test-git rev-parse /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion --show-toplevel git /usr/bin/git git add new-feature.txt git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOINSECURE GOMOD GOMODCACHE go env tFiP/BTxw4RWUNaZGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 4441855/b415/impGOPROXY (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo /usr/bin/git -json GO111MODULE /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel GOPROXY /usr/bin/git git (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build749762768/b376/cli.test /tmp/go-build749762768/b376/cli.test -test.testlogfile=/tmp/go-build749762768/b376/testlog.txt -test.paniconexit0 -test.timeout=10m0s env ck &#39;scripts/**/*GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh (http block)
    • Triggering command: /tmp/go-build60492760/b400/cli.test /tmp/go-build60492760/b400/cli.test -test.testlogfile=/tmp/go-build60492760/b400/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -json GO111MODULE /home/REDACTED/work/_temp/uv-pytho--show-toplevel git rev-�� --show-toplevel bash /usr/bin/git licyMinIntegritynode GOPROXY /usr/bin/gcc git (http block)
    • Triggering command: /tmp/go-build3718701233/b001/cli.test /tmp/go-build3718701233/b001/cli.test -test.paniconexit0 -test.timeout=10m0s -test.count=1 rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name 4441855/b373/_pkGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env OLU3/hQm8aey2kAZGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 4441855/b373/impGOPROXY (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name --show-toplevel go /usr/bin/git -json GO111MODULE /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /ref/tags/v8 GOPROXY /opt/hostedtoolcache/go/1.25.0/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name --show-toplevel git /usr/bin/git -m Update initial fjs/fuzz_mentions_harness.cjs /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)

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

Copilot AI requested a review from pelikhan March 20, 2026 05:45
@pelikhan pelikhan added the smoke label Mar 20, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 20, 2026

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

@github-actions
Copy link
Contributor

github-actions bot commented Mar 20, 2026

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

@github-actions
Copy link
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 Mar 20, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 20, 2026

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

@github-actions
Copy link
Contributor

Agent Container Tool Check

Tool Status Version
bash 5.2.21
sh available
git 2.53.0
jq 1.7
yq v4.52.4
curl 8.5.0
gh 2.87.3
node v20.20.1
python3 3.12.3
go 1.24.13
java 21.0.10
dotnet 10.0.102

Result: 12/12 tools available ✅

Overall Status: PASS

🔧 Tool validation by Agent Container Smoke Test ·

@github-actions
Copy link
Contributor

Smoke Test Results for run §23330853729

Test Status
GitHub MCP
MCP Scripts GH CLI
Serena MCP ⚠️ N/A
Playwright
Web Fetch
File Writing
Bash Tool
Discussion Interaction
Build gh-aw
Discussion Creation
Workflow Dispatch
PR Review

Overall: ✅ PASS — PR by @pelikhan · Assignees: @pelikhan, @Copilot

Note

🔒 Integrity filtering filtered 1 item

Integrity filtering activated and filtered the following item during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.

📰 BREAKING: Report filed by Smoke Copilot ·

Copy link
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.

Quick review of PR #21903 — the staged handler skip logic is well-implemented. The isHandlerStaged helper is clear and the pattern is applied consistently. See inline comments for minor observations.

Note

🔒 Integrity filtering filtered 1 item

Integrity filtering activated and filtered the following item during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.

  • pr:#21903 (pull_request_read: Resource 'pr:#21903' has lower integrity than agent requires. Agent would need to drop integrity tags [unapproved:all approved:all] to trust this resource.)

📰 BREAKING: Report filed by Smoke Copilot

if safeOutputs.CreateIssues != nil {
// Merge permissions for all handler-managed types.
// Staged handlers are skipped because they do not make real API calls.
if safeOutputs.CreateIssues != nil && !isHandlerStaged(safeOutputs.Staged, safeOutputs.CreateIssues.Staged) {
Copy link
Contributor

Choose a reason for hiding this comment

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

The staged-handler check pattern is applied consistently across all handler types — nice. Consider extracting the repeated !isHandlerStaged(safeOutputs.Staged, handler.Staged) pattern into a small loop over a slice of handlers in the future if more handler types are added, to avoid repetition.

// (i.e., it will only emit preview output, not make real API calls). A handler is
// staged when either the global safe-outputs staged flag is true, or the
// per-handler staged flag is true. Staged handlers do not require write permissions.
func isHandlerStaged(globalStaged, handlerStaged bool) bool {
Copy link
Contributor

Choose a reason for hiding this comment

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

Clean and readable helper! One minor note: this could equivalently be return globalStaged || handlerStaged without the named function, but having it as a named helper makes the intent explicit and improves readability across all call sites. 👍

@github-actions
Copy link
Contributor

📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤

@github-actions
Copy link
Contributor

Commit pushed: 5d4207f

Generated by Changeset Generator

@github-actions
Copy link
Contributor

Smoke Test (Codex)

PRs: #21907 fix: resolve 4 CLI consistency issues from automated inspection; #21908 refactor: semantic function clustering — move functions to better-aligned files
GitHub MCP (2 merged PRs): ✅
Serena activate_project + find_symbol (>=3): ✅
Playwright github.com title contains "GitHub": ✅
web-fetch github.com contains "GitHub": ✅
File write + bash cat verification: ✅
Build (make build with tmp caches): ✅
Overall status: PASS

Warning

⚠️ Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • ab.chatgpt.com

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

network:
  allowed:
    - defaults
    - "ab.chatgpt.com"

See Network Configuration for more information.

🔮 The oracle has spoken through Smoke Codex ·

Copy link
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!

Note

🔒 Integrity filtering filtered 2 items

Integrity filtering activated and filtered the following items during workflow execution.
This happens when a tool call accesses a resource that does not meet the required integrity or secrecy level of the workflow.

  • pr:#21903 (pull_request_read: Resource 'pr:#21903' has lower integrity than agent requires. Agent would need to drop integrity tags [unapproved:all approved:all] to trust this resource.)
  • pr:#21903 (pull_request_read: Resource 'pr:#21903' has lower integrity than agent requires. Agent would need to drop integrity tags [approved:all unapproved:all] to trust this resource.)

💥 [THE END] — Illustrated by Smoke Claude

// staged when either the global safe-outputs staged flag is true, or the
// per-handler staged flag is true. Staged handlers do not require write permissions.
func isHandlerStaged(globalStaged, handlerStaged bool) bool {
return globalStaged || handlerStaged
Copy link
Contributor

Choose a reason for hiding this comment

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

The isHandlerStaged helper is clean and well-placed. Consider adding a test case where both globalStaged and handlerStaged are true to document that either being true is sufficient.

// permissions that are required by the configured safe outputs.
// Handlers that are staged (globally or per-handler) are skipped because
// staged mode only emits preview output and does not make any API calls.
func ComputePermissionsForSafeOutputs(safeOutputs *SafeOutputsConfig) *Permissions {
Copy link
Contributor

Choose a reason for hiding this comment

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

Good use of early return when safeOutputs == nil. The principle-of-least-privilege approach here is solid — staged handlers correctly skip permission requests.

@pelikhan pelikhan merged commit 906c3e7 into main Mar 20, 2026
@pelikhan pelikhan deleted the copilot/ignore-staged-safe-output-write-access branch March 20, 2026 06:01
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