GitHub Agentic Workflows

Artifacts

GitHub Agentic Workflows upload several artifacts during workflow execution. This reference documents every artifact name, its contents, and how to access the data — especially for downstream workflows that use gh run download directly instead of gh aw logs.

Artifact NameConstantTypeDescription
agentconstants.AgentArtifactNameMulti-fileUnified agent job outputs (logs, safe outputs, token usage summary)
activationconstants.ActivationArtifactNameMulti-fileActivation job output (aw_info.json, prompt.txt, rate limits)
firewall-audit-logsconstants.FirewallAuditArtifactNameMulti-fileAWF firewall audit/observability logs (token usage, network policy, audit trail)
detectionconstants.DetectionArtifactNameSingle-fileThreat detection log (detection.log)
safe-outputconstants.SafeOutputArtifactNameLegacy/back-compatHistorical standalone safe output artifact (safe_output.jsonl); in current compiled workflows this content is included in the unified agent artifact instead
agent-outputconstants.AgentOutputArtifactNameLegacy/back-compatHistorical standalone agent output artifact (agent_output.json); in current compiled workflows this content is included in the unified agent artifact instead
aw-infoSingle-fileEngine configuration (aw_info.json)
promptSingle-fileGenerated prompt (prompt.txt)
safe-outputs-itemsconstants.SafeOutputItemsArtifactNameSingle-fileSafe output items manifest
code-scanning-sarifconstants.SarifArtifactNameSingle-fileSARIF file for code scanning results

The gh aw logs and gh aw audit commands support --artifacts to download only specific artifact groups:

Set NameArtifacts DownloadedUse Case
allEverythingFull analysis (default)
agentagentAgent logs and outputs
activationactivationActivation data (aw_info.json, prompt.txt)
firewallfirewall-audit-logsNetwork policy and firewall audit data
mcpfirewall-audit-logsMCP gateway traffic logs
detectiondetectionThreat detection output
github-apiactivation, agentGitHub API rate limit logs
Terminal window
# Download only firewall artifacts
gh aw logs <run-id> --artifacts firewall
# Download agent and firewall artifacts
gh aw logs <run-id> --artifacts agent --artifacts firewall
# Download everything (default)
gh aw logs <run-id>

The firewall-audit-logs artifact is uploaded by all firewall-enabled workflows. It contains AWF (Agent Workflow Firewall) structured audit and observability logs.

! Important: This artifact is separate from the agent artifact. Token usage data (token-usage.jsonl) lives here, not in the agent artifact.

firewall-audit-logs/
├── api-proxy-logs/
│ └── token-usage.jsonl ← Token usage data (input/output/cache tokens per API request)
├── squid-logs/
│ └── access.log ← Network policy log (domain allow/deny decisions)
├── audit.jsonl ← Firewall audit trail (policy matches, rule evaluations)
└── policy-manifest.json ← Policy configuration snapshot

Recommended: Use gh aw logs

Terminal window
# Download and analyze firewall data
gh aw logs <run-id> --artifacts firewall
# Output as JSON for scripting
gh aw logs <run-id> --artifacts firewall --json

Direct download with gh run download:

Terminal window
# Download the firewall-audit-logs artifact
gh run download <run-id> -n firewall-audit-logs
# Token usage data is at:
cat firewall-audit-logs/api-proxy-logs/token-usage.jsonl
# Network access log is at:
cat firewall-audit-logs/squid-logs/access.log
# Audit trail is at:
cat firewall-audit-logs/audit.jsonl
# Policy manifest is at:
cat firewall-audit-logs/policy-manifest.json

Downstream workflows sometimes download agent-artifacts or agent expecting to find token-usage.jsonl. This will silently return no data — the token usage file is only in the firewall-audit-logs artifact.

Terminal window
# ✗ WRONG — token-usage.jsonl is NOT in the agent artifact
gh run download <run-id> -n agent
cat agent/token-usage.jsonl # File not found!
# ✓ CORRECT — download from firewall-audit-logs
gh run download <run-id> -n firewall-audit-logs
cat firewall-audit-logs/api-proxy-logs/token-usage.jsonl

The unified agent artifact contains all agent job outputs.

  • Agent execution logs
  • Safe output data (agent_output.json)
  • GitHub API rate limit logs (github_rate_limits.jsonl)
  • Token usage summary (agent_usage.json) — aggregated totals only; per-request data is in firewall-audit-logs

The activation artifact contains activation job outputs.

  • aw_info.json — Engine configuration and workflow metadata
  • prompt.txt — The generated prompt sent to the AI agent
  • github_rate_limits.jsonl — Rate limit data from the activation job

The detection artifact contains threat detection output.

  • detection.log — Threat detection analysis results

Legacy name: threat-detection.log (still supported for backward compatibility).

Artifact names changed between upload-artifact v4 and v5. The gh aw logs and gh aw audit commands handle both naming schemes transparently:

Old Name (pre-v5)New Name (v5+)File Inside
aw_info.jsonaw-infoaw_info.json
safe_output.jsonlsafe-outputsafe_output.jsonl
agent_output.jsonagent-outputagent_output.json
prompt.txtpromptprompt.txt
threat-detection.logdetectiondetection.log

Single-file artifacts are automatically flattened to root level regardless of their artifact directory name. Multi-file artifacts (firewall-audit-logs, agent, activation) retain their directory structure.

When workflows are invoked via workflow_call, GitHub Actions prepends a short hash to artifact names (e.g., abc123-firewall-audit-logs). The CLI handles this automatically by matching artifact names that end with -{base-name}.

Terminal window
# Both of these are recognized as the firewall artifact:
# - firewall-audit-logs (direct invocation)
# - abc123-firewall-audit-logs (workflow_call invocation)