Version control for the AI agent era.
Every decision in Drift follows from these. They are not aspirations—they are constraints.
Every object is immutable and content-addressable. There is no history rewriting, no force push, and no rebase. What happened, happened.
| Object | Git Equivalent | Purpose | Key Fields |
|---|---|---|---|
| Intent | Commit | The atomic unit of progress. A goal plus the work that fulfilled it. | id, parent, goal, status, author, sessions, changeset, snapshot |
| Session | (no equivalent) | A complete record of an AI agent's work towards an intent. | agent descriptor, conversation, tool calls, reasoning, checkpoints, cost, redactions |
| Changeset | Diff (partial) | A semantic representation of what changed, at the AST level where possible. | structural deltas, dependency deltas, raw file deltas, impact graph |
| Stream | Branch | A named, evolving line of development with built-in policy. | name, head, policy (review, test, agent rules), upstream |
| Snapshot | Tree | Full state of the workspace at a point in time. | file map, CodeGraph (cross-file deps), dependency manifest |
Git has ~150 commands. Drift maps to four activities: starting and finishing work, navigating history, managing streams, and collaborating.
Each layer has a single responsibility and communicates only with its immediate neighbours. Swap the transport layer without touching the CLI.
If the semantic engine works reliably, Drift is a fundamentally better tool than git. If it does not, Drift is merely a nicer interface on top of the same text-based operations. Everything depends on this component.
Each row reflects a real pain point that development teams encounter regularly.
| Dimension | Git | Entire (on Git) | Drift |
|---|---|---|---|
| Primary unit | Commit (text snapshot) | Commit + session on branch | Intent (goal + session + semantic changeset) |
| Code structure | None (text lines) | None (inherits git) | AST-level via tree-sitter |
| AI sessions | Not captured | Side branch | First-class object with redaction |
| Merge | Text-based | Text-based | Semantic (structure-aware) |
| Privacy | None | None (full transcripts) | Redaction engine + access control |
| Storage | Good (packfiles) | Poor (session bloat) | Tiered (hot / warm / cold) |
| Multi-agent | Not supported | Not supported | Optimistic concurrency + semantic merge |
| CLI complexity | ~150 commands | Git + additional | 12 core commands |
| Dependencies | Text files | Text files | Parsed, tracked, smart merge |
| History model | Mutable (rebase, force push) | Mutable | Append-only, immutable |
| CI / automation | External only | External | Drift Actions in drift.toml |
| Configuration | Scattered files | Scattered + more | Single drift.toml, fully versioned |