Companion draft, separately versioned. Version: draft 0.1, for ASR format version 0.1 and the GitHub Unified Agent Session Specification v2.5.0 (serialization format version 1). Not part of core conformance.GitHub’s Unified Agent Session Specification (UAS) normalizes the logs of the agent engines that GitHub Agentic Workflows runs (Claude, Copilot, Codex, Gemini, Pi and others) into a canonical trace. It also assembles a unified artifact with runtime evidence from one workflow run. ASR and UAS share several normalization rules; this companion maps between them. UAS persists its canonical trace in a file named
agent-session.jsonl. Despite the name, that file is a UAS trace, not an ASR stream.
Shared normalization rules
Import (UAS to ASR)
producer.method: "import", producer.source: {"format": "gh-aw-uas", "formatVersion": "1"}. One ASR stream per agent session in the trace.
- Records are written in trace order;
seqfollows array position. - Event
idvalues become record IDs where they fit the pattern (ASR-018), and are otherwise kept innative;parentIdis preserved innativeand not interpreted, as in UAS. - Per-record
provenancegoes in_meta["com.github.gh-aw/provenance"]. - Token fields map to ASR usage.
input_tokens_include_cachetrue,falseor absent maps toincludesCachetrue,falseornull. Per-turn reports that accumulate become cumulativeusage_summaryrecords (ASR-319). - UAS has no file-edit or commit events: declare
file_changeas lost, unless the importer reads edits from tool inputs under the coding profile’s precision rules. - The compact unified session profile is a lossy view and SHOULD NOT be imported when the full trace is available.
Export (ASR to UAS)
An exporter writes a UAS canonical trace (layer 1) from a stream’s records inseq order:
Records with no UAS equivalent (
file_change, vcs, compaction, rewind, permission, input_request, memory_change, delivery, plan, hook, terminal, gap, tombstone and others) are exported as namespaced events of type agent_session.<record type> containing the record. UAS allows these additional event types and preserves their order. The exporter omits these records on request. Branches are flattened to the primary head’s active path; the exporter declares this.