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.
Quick Reference
Section titled “Quick Reference”| agent | constants.AgentArtifactName | Multi-file | Unified agent job outputs (logs, safe outputs, token usage summary) |
| activation | constants.ActivationArtifactName | Multi-file | Activation job output (aw_info.json, prompt.txt, rate limits) |
| firewall-audit-logs | constants.FirewallAuditArtifactName | Multi-file | AWF firewall audit/observability logs (token usage, network policy, audit trail) |
| detection | constants.DetectionArtifactName | Single-file | Threat detection log (detection.log) |
| safe-output | constants.SafeOutputArtifactName | Legacy/back-compat | Historical standalone safe output artifact (safe_output.jsonl); in current compiled workflows this content is included in the unified agent artifact instead |
| agent-output | constants.AgentOutputArtifactName | Legacy/back-compat | Historical standalone agent output artifact (agent_output.json); in current compiled workflows this content is included in the unified agent artifact instead |
| aw-info | — | Single-file | Engine configuration (aw_info.json) |
| prompt | — | Single-file | Generated prompt (prompt.txt) |
| experiment | constants.ExperimentArtifactName | Multi-file | A/B experiment state (state.json) uploaded by the activation job when experiments are declared in the frontmatter |
| usage | constants.UsageArtifactName | Multi-file | Compact conclusion-job artifact with workflow-run metadata and token-usage files used by lightweight reporting and forecasting paths |
| safe-outputs-items | constants.SafeOutputItemsArtifactName | Single-file | Safe output items manifest |
| code-scanning-sarif | constants.SarifArtifactName | Single-file | SARIF file for code scanning results |
Artifact Sets
Section titled “Artifact Sets”The gh aw logs and gh aw audit commands support --artifacts to download only specific artifact groups:
| all | Everything | Full analysis (default) |
| agent | agent | Agent logs and outputs |
| activation | activation | Activation data (aw_info.json, prompt.txt) |
| firewall | firewall-audit-logs | Network policy and firewall audit data |
| mcp | firewall-audit-logs | MCP gateway traffic logs |
| detection | detection | Threat detection output |
| experiment | experiment | A/B experiment state (only present when experiments are declared) |
| usage | usage | Compact conclusion-job artifact for lightweight reporting and forecasting |
| github-api | activation, agent | GitHub API rate limit logs |
firewall-audit-logs
Section titled “firewall-audit-logs”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.
Directory Structure
Section titled “Directory Structure”token-diag.log is written by the AWF api-proxy diag() path (containers/api-proxy/token-persistence.js) to $AWF_TOKEN_LOG_DIR/token-diag.log (default /var/log/api-proxy/token-diag.log). It is only emitted when AWF_DEBUG_TOKENS=1, so set that environment variable on the workflow step that runs with AWF enabled when you need token diagnostics.
Accessing Token Usage Data
Section titled “Accessing Token Usage Data”Recommended: Use gh aw logs
Direct download with gh run download:
Common Mistake
Section titled “Common Mistake”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.
JSON Schemas
Section titled “JSON Schemas”The JSONL files in this artifact are described by versioned JSON Schemas published by github/gh-aw-firewall. Each record includes a _schema field (for example "audit/v0.26.0") so consumers can identify the record type and AWF version.
| audit.jsonl | audit.schema.json | https://github.com/github/gh-aw-firewall/releases/download/<tag>/audit.schema.json |
| api-proxy-logs/token-usage.jsonl | token-usage.schema.json | https://github.com/github/gh-aw-firewall/releases/download/<tag>/token-usage.schema.json |
Use releases/latest/download/ in place of a specific tag to track the most recent published release. Schemas are versioned by AWF release tag; consumers should match _schema by prefix (for example _schema.startsWith("audit/")) so additive changes remain non-breaking.
The unified agent artifact contains all agent job outputs.
Contents
Section titled “Contents”- 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
- otel.jsonl — OTLP span mirror written by gh-aw’s JavaScript span exporters (only present when observability.otlp is configured)
- copilot-otel.jsonl — OTLP spans emitted by Copilot CLI (only present when observability.otlp is configured)
For OTLP configuration, runtime environment variables, and span semantics, see the OpenTelemetry guide.
activation
Section titled “activation”The activation artifact contains activation job outputs.
Contents
Section titled “Contents”- 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
detection
Section titled “detection”The detection artifact contains threat detection output.
Contents
Section titled “Contents”- detection.log — Threat detection analysis results
Legacy name: threat-detection.log (still supported for backward compatibility).
experiment
Section titled “experiment”The experiment artifact is uploaded by the activation job only when the workflow frontmatter declares one or more experiments entries. It is not present on runs without experiments.
Contents
Section titled “Contents”- state.json — Cumulative per-variant invocation counters used to balance A/B assignments across runs
Accessing experiment data
Section titled “Accessing experiment data”The A/B Experiments section of the audit report shows the variant chosen for the run and the cumulative counts:
See A/B Experiments for how to declare experiments in workflow frontmatter.
The usage artifact is a compact artifact produced by the conclusion job. It carries workflow-run metadata and token-usage files used by lightweight reporting and forecasting paths, so downstream tools can read aggregated usage data without downloading the full agent artifact.
Accessing usage data
Section titled “Accessing usage data”Naming Compatibility
Section titled “Naming Compatibility”Artifact names changed between upload-artifact v4 and v5. The gh aw logs and gh aw audit commands handle both naming schemes transparently:
| aw_info.json | aw-info | aw_info.json |
| safe_output.jsonl | safe-output | safe_output.jsonl |
| agent_output.json | agent-output | agent_output.json |
| prompt.txt | prompt | prompt.txt |
| threat-detection.log | detection | detection.log |
Single-file artifacts are automatically flattened to root level regardless of their artifact directory name. Multi-file artifacts (firewall-audit-logs, agent, activation, experiment) retain their directory structure.
Workflow Call Prefixes
Section titled “Workflow Call Prefixes”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}.
Related Documentation
Section titled “Related Documentation”- Audit Commands — Download and analyze workflow run artifacts
- Cost Management — Track token usage and inference spend
- Network — Firewall and domain allow/deny configuration
- Compilation Process — How workflows are compiled including artifact upload steps