dotnet-replay
0.9.1
dotnet tool install --global dotnet-replay --version 0.9.1
dotnet new tool-manifest
dotnet tool install --local dotnet-replay --version 0.9.1
#tool dotnet:?package=dotnet-replay&version=0.9.1
nuke :add-package dotnet-replay --version 0.9.1
dotnet-replay
Interactive terminal viewer for Copilot CLI sessions and waza evaluation transcripts. Built as a single-file .NET 10 app
Try it out
Requires the .NET 10 SDK.
dnx dotnet-replay # Browse your recent Copilot CLI sessions
No install needed — dnx downloads the tool to the NuGet cache, runs it, and cleans up.
Install
Global tool (recommended)
dotnet tool install -g dotnet-replay
Once installed globally, run replay directly from any directory.
Local tool manifest
dotnet new tool-manifest # if you don't already have one
dotnet tool install dotnet-replay
With a local install, use dotnet replay instead.
Usage
Session Browser
replay # Browse recent Copilot CLI and Claude Code sessions
replay <session-id> # Open a session by GUID
Run with no arguments to interactively browse your Copilot CLI and Claude Code sessions. Sessions are loaded asynchronously and can be filtered with /.
Interactive Mode (Default)
replay <file> # Interactive pager with keybindings
replay <file> --tail 10 # Show only the last 10 turns
replay <file> --expand-tools # Show tool args, results, and thinking
replay <file> --full # Don't truncate long content
replay <file> --filter user # Filter by event type (user, assistant, tool, error)
replay <file> --no-color # Disable ANSI colors
replay session.jsonl --no-follow # Disable auto-follow for JSONL files
Note:
dotnet replayalso works if you prefer the explicit prefix.
Auto-follow: JSONL files automatically watch for new content (like
tail -f). Use--no-followto disable this behavior.
Stream Mode (Non-Interactive)
replay <file> --stream # Output entire transcript and exit
replay <file> | less # Auto-switches to stream mode when piped
JSON and Summary Modes
replay <file> --json # Output as structured JSONL
replay <file> --json --filter user # JSON output of user messages only
replay <file> --json --tail 5 # JSON output of last 5 turns
replay <file> --json --expand-tools # Include tool args/results in JSON
replay --db sessions.db --json # Export DB session metadata as JSON
replay <file> --summary # Show high-level session statistics
replay <file> --summary --json # Summary as machine-readable JSON
JSON output format — One JSON object per line:
{"turn": 0, "role": "user", "timestamp": "2026-02-20T02:07:54Z", "content": "...", "content_length": 1234}
{"turn": 0, "role": "assistant", "timestamp": "2026-02-20T02:08:12Z", "content": "...", "content_length": 5678, "tool_calls": ["skill", "view"]}
{"turn": 0, "role": "tool", "tool_name": "view", "status": "complete", "result_length": 2048}
Summary output shows session overview: duration, turn counts, tools used, skills invoked, and errors.
Supported Formats
- Copilot CLI events (
.jsonl) — Session transcripts from GitHub Copilot CLI - Claude Code sessions (
.jsonl) — Session transcripts from Claude Code (~/.claude/projects/) - Waza evaluation results (
.json) — EvaluationOutcome format withtasks[].runs[].transcript[] - Waza task transcripts (
.json) — Flat JSON withtranscript[]array and optionalsession_digest
Keybindings
| Key(s) | Action |
|---|---|
| ↑ or k | Scroll up one line |
| ↓ or j | Scroll down one line |
| ← or h | Scroll left (pan horizontally) |
| → or l | Scroll right (pan horizontally) |
| PgUp | Page up |
| PgDn | Page down |
| 0 | Reset horizontal scroll |
| Space | Page down |
| g or Home | Jump to start of transcript |
| G or End | Jump to end of transcript |
| t | Toggle tool expansion (show/hide args, results, and thinking) |
| f | Cycle filter: all → user → assistant → tool → error |
| i | Toggle session info overlay |
| / | Enter search mode |
| n | Jump to next search match |
| N | Jump to previous search match |
| r | Resume session (launches copilot --resume or claude --resume) |
| b | Browse sessions (return to session browser) |
| q or Esc | Quit |
Examples
View an interactive transcript:
replay session-events.jsonl
View the last 5 turns with tool expansion:
replay results.json --tail 5 --expand-tools
Stream the entire transcript without interaction:
replay transcript.json --stream
Pipe to a file:
replay session.jsonl --expand-tools > output.txt
About
dotnet-replay was built by a squad currently in stealth mode.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.9.1 | 135 | 4/3/2026 |
| 0.9.0 | 121 | 4/2/2026 |
| 0.8.1 | 127 | 3/17/2026 |
| 0.8.0 | 122 | 3/16/2026 |
| 0.7.1 | 113 | 2/26/2026 |
| 0.7.0 | 104 | 2/26/2026 |
| 0.6.0 | 104 | 2/21/2026 |
| 0.5.3 | 106 | 2/21/2026 |
| 0.5.2 | 105 | 2/20/2026 |
| 0.5.1 | 101 | 2/20/2026 |
| 0.5.0 | 109 | 2/20/2026 |
| 0.4.4 | 103 | 2/18/2026 |
| 0.4.3 | 102 | 2/18/2026 |
| 0.4.2 | 102 | 2/18/2026 |
| 0.4.1 | 103 | 2/16/2026 |
| 0.4.0 | 102 | 2/16/2026 |
| 0.3.0 | 105 | 2/16/2026 |
| 0.2.0 | 102 | 2/15/2026 |
| 0.1.0 | 104 | 2/15/2026 |