Phistory: A Version Archive of System Prompts from AI Agent CLIs
Phistory automatically archives versioned system prompt snapshots from agent CLIs like Claude Code, Codex, OpenClaw, and Hermes.
At a glance
- What is it?
- Phistory automatically captures and archives the system prompts that coding agent CLIs like Claude Code, Codex, and Grok Build send to LLM providers on every release, storing each snapshot as a diff-readable Markdown file. The hosted viewer at phistory.cc covers 14 agents and includes over 427 Claude Code versions.
- Who is it for?
- Phistory is the right tool for researchers, security engineers, and developers who want to track how agent CLI prompts evolve across releases without manually extracting them from each version. The hosted viewer at phistory.cc covers 14 agents and updates hourly.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly HTML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Phistory Captures and Why It Matters
Every AI coding agent CLI sends a system prompt to the LLM on each invocation. These prompts define the agent's behavior: which tools it can call, what permissions it must request, what models it defaults to, and how it should respond to the user. Agent builders update these prompts with every release, adding rules, removing capabilities, changing tool definitions, and adjusting safety policies.
Phistory tracks these changes by capturing the exact HTTP request that each CLI sends, without forwarding the request to the real model provider. For each tracked CLI, it installs the exact package version, runs a configured snapshot, intercepts the request using the claude-tap library, and stores the result under captures/<agent>/<version>/variants/<variant>/ as three files: prompt.md (rendered from the trace), trace.jsonl (the raw HTTP trace), and meta.json (metadata about the capture).
This makes it possible to compare system prompts between versions, identify when a new tool was added or a permission check was tightened, and cite stable references when writing about agent behavior. The README notes specific research-relevant uses: seeing when tool definitions change, tracking model default changes, and comparing how different CLIs structure agent behavior.
Fourteen Supported Agents and Their Coverage
Phistory tracks 14 agent CLIs. As of the capture status table in the README, the counts are:
Claude Code has 427 tracked versions and 734 snapshots (multiple variants per version are captured separately). Codex CLI has 95 versions and 143 snapshots. Oh My Pi has 114 snapshots, opencode has 117 snapshots, and Grok Build has 137. Smaller CLIs include DeepSeek Harness (13 versions, 69 snapshots), Antigravity (55 versions), Hermes Agent (34 versions), and Kimi CLI (23 versions).
For Claude Code, the variant system matters: a default variant captures the CLI running the way users do in a real terminal. Additional variants capture specific models (for example, different Codex model selections), enabling comparison not just across versions but across model configurations within the same version.
GitHub Actions checks automatically for new CLI releases every hour and commits new snapshots when they appear. The last capture update shown in the README was 2026-09-28 at 07:31 UTC.
Using the Hosted Viewer and Running Local Captures
The hosted viewer at phistory.cc is the primary interface. It shows each agent's version history, renders prompt diffs between versions, and provides Chinese translations for diff text. Translations for unchanged paragraphs are shared across versions to reduce redundancy.
For local development, generating captures, historical backfills, or archiving a CLI version not yet in the public archive, the repository includes a Python CLI tool. Install the locked development environment with:
uv sync --all-groupsTo capture the latest release for all supported agents:
uv run phistory capture --latest --agents claude-code,codex,dsh,antigravity,grok,minimax-code,kimi-code,mimo,openclaw,hermes,kimi,opencode,pi,ompTo capture specific variants for one agent:
uv run phistory capture --latest --agents codex --variants default,gpt-5.5,gpt-5.6To backfill a historical version range:
uv run phistory backfill claude-code --from 2.1.113 --to latestThe tool requires Python 3.11 or above and depends on claude-tap, a companion library for intercepting the prompt-bearing HTTP request without forwarding it to the LLM provider.
How the Capture Mechanism Works
The README describes the capture approach: for each supported release, Phistory installs the exact CLI package version and runs each configured snapshot through claude-tap. claude-tap intercepts the outbound HTTP request that the CLI sends to the LLM provider, captures the full request body (which contains the system prompt), and returns a synthetic response so the CLI exits without making a real API call.
The resulting prompt.md file is rendered from the archived trace, preserving every block of the request: each system block with its cache boundary, reminder blocks, and any system messages interleaved in the conversation. The README notes that this structure means every part of the request that affects the model's behavior is preserved in the Markdown output, not just the first system message.
The default snapshot runs the CLI through a real terminal session when the CLI ships one, which replicates the actual user experience rather than a programmatic invocation that might omit prompts injected at runtime.
Limitations and What Phistory Cannot Track
Phistory captures only the system prompt content sent in the HTTP request. It does not capture prompts that are fetched dynamically at inference time by the model itself, prompts stored server-side at the provider, or multi-turn conversation context that builds up during a session.
The tool only tracks the CLIs it has been configured to support. A new CLI or a CLI that uses a non-standard HTTP path will not appear in the archive until someone adds a configuration for it. The supported list is maintained as part of the repository.
For teams who want to track agent behavior without capturing prompt content, reviewing the official changelogs published by Claude Code or Codex is a simpler alternative. The difference is that official changelogs describe changes in prose from the developer's perspective, while Phistory shows the exact text of the prompt before and after, which may reveal changes that were not mentioned in any public release note.
Maintenance, License, and Repository Structure
The last push to the repository was on 2026-09-25. The repository is not archived. The pyproject.toml declares the license as MIT, but the repository metadata field reports it as unknown. Teams that need a verified license declaration should reference pyproject.toml directly.
The repository structure places the Python package under phistory/, the archived captures under captures/<agent>/<version>/, and translations under translations/. The docs/ directory contains documentation for the translation setup, model evaluation, and other operational details. GitHub Actions automation is configured in .github/.
The project has no published GitHub releases. Version history is tracked through the Git commit log and the capture status table, which shows the latest archived version for each agent alongside the timestamp of the last capture.
Editorial conclusion
Phistory is the right tool for researchers, security engineers, and developers who want to track how agent CLI prompts evolve across releases without manually extracting them from each version. The hosted viewer at phistory.cc covers 14 agents and updates hourly. Teams who want to run private captures or archive a CLI not in the public list can run phistory locally after cloning the repository and configuring uv. Verify that the MIT license is declared in pyproject.toml before relying on it, since the repository metadata reports the license as unknown.
Frequently asked questions
How often does Phistory check for new CLI releases?
GitHub Actions is configured to check for new releases every hour and commits new snapshots automatically when they appear. The last capture update is shown on the repository's README.
Can Phistory capture system prompts from a CLI not in its supported list?
Not without adding configuration for it. The supported agents are defined in the repository's configuration. The README provides local development commands for running captures and backfills, so a new agent can be added and captured locally.
What does a Phistory snapshot contain?
Each snapshot stores three files: prompt.md (the rendered system prompt including all blocks and cache boundaries), trace.jsonl (the raw HTTP trace), and meta.json (capture metadata). These are saved at captures/<agent>/<version>/variants/<variant>/.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/weifeng2333-phistory)