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; seq follows array position.
  • Event id values become record IDs where they fit the pattern (ASR-018), and are otherwise kept in native; parentId is preserved in native and not interpreted, as in UAS.
  • Per-record provenance goes in _meta["com.github.gh-aw/provenance"].
  • Token fields map to ASR usage. input_tokens_include_cache true, false or absent maps to includesCache true, false or null. Per-turn reports that accumulate become cumulative usage_summary records (ASR-319).
  • UAS has no file-edit or commit events: declare file_change as 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 in seq 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.