GitAegis Cloud · History mode ⌘3 · Requires an account
Why is this commit here?
Select a commit, press Generate AI Report, and read an analysis that keeps the facts it was given apart from the conclusions it drew from them. Nothing is generated while you browse.
It needs a signed-in GitAegis account, because the analysis runs in GitAegis Cloud, and it sends the commit’s metadata, its relationship to your branch, and the changed file paths with their line counts. Never file contents. Never commit message bodies.
On demand only · Account required · Metadata only · Cannot run a Git operation
The question a commit rarely answers
You are reading history because something is wrong, or because you are about to touch code somebody else wrote. The commit in front of you says fix auth, it landed fourteen months ago, and the person who wrote it has left.
What you actually want to know is where it sits: whether it is on your branch, how far behind, what it touched and how heavily, and what that shape suggests. Most of that is already in the repository as metadata. The work is reading it and saying what it implies.
That is what this does, and the limits are the point. It is one commit, from its metadata, on request. It is not an assistant with a view of your codebase, because there is no index of your codebase for it to have a view of.
A commit records what changed. Why it changed is usually somewhere else, or nowhere.
What happens when you press the button
Six steps, in order, because every one of them is a place a feature like this usually gets vague.
Nothing happens until you ask. Twice.
Selecting a commit sends nothing. Opening the report card sends nothing: it renders idle, with the button and a line saying nothing is sent until you ask. The request is made by Generate AI Report and by nothing else, and a report you have already generated is re-read from the session rather than requested again.The first time, you are told exactly what will be sent.
The consent notice names the payload rather than describing it in the abstract: the commit’s metadata, its relationship to the current branch, and the list of changed file paths with added and deleted line counts, and it states that file contents and commit message bodies are never sent. You allow it or you do not.
The consent is recorded on your machine, for this feature, with the time you granted it. One precision worth having: it is not versioned. Nothing re-prompts if the payload ever changes, which is why the payload is written out on this page rather than left to a dialog you saw once.
GitAegis assembles the facts itself.
Three reads against your repository, all local, all deterministic: the commit’s metadata, its relationship toHEAD, andgit diff --numstatfor the shape of the change. The model is never the thing that establishes a fact. It is given facts and asked to phrase what follows from them.Known secret shapes are stripped before anything leaves.
A scanner runs over the assembled request for the shapes it recognises: provider token prefixes, AWS access key ids, bearer headers, credentials embedded in a URL, private-key blocks, and assignments whose name containsSECRET,TOKEN,PASSWORDorAPI_KEY. Each match becomes a labelled marker, and the finished report tells you how many were replaced. It is a scanner for shapes, not a guarantee about prose, and the guarantee that does hold is the one in the step above: there is no patch text in the process to leak.The request goes through GitAegis Cloud, on your account.
This is the part that needs the account. The request is authenticated as you, runs on Cloudflare Workers AI, and is counted against your usage: the feature, the model and the token totals, for failures as well as successes. Signed out, it does not fall back to anything. It fails and tells you to sign in.
Prompts and completions are not used to train models, and every report repeats that declaration beneath its own text rather than leaving it on a page like this one.
You get text, and only text.
The report cannot stage, commit, merge, rebase, reset, push or delete, and it is not wired to anything that can. The model is given no tools, and the repository data in its prompt is wrapped as inert data with an explicit instruction not to obey anything inside it, because a commit subject is untrusted input like any other.
The data boundary
Three things go. Three things never do.
Listed exactly, because “we only send metadata” is a sentence that has been used to cover a great deal.
What is sent
The commit's own metadata
Its object id and short id, its subject line, the author's name, when it was authored and committed, its parents, whether it is a merge, the short names of any refs pointing at it, and how many files it touched.
How the commit relates to the branch you are on
How far ahead and behind, whether it is an ancestor, and the short id of the merge base. This is what lets the report say where a commit sits rather than only what it says about itself.
The shape of the diff, never the diff
The number of files changed and the total lines added and deleted, plus up to ten changed file paths with the added and deleted count for each. This comes from `git diff --numstat`, which emits counts and paths and no patch text at all.
What is never sent
File contents
No patch text, no blobs, no working-tree contents. The tool that describes the diff runs a statistics-only command, so there is no path by which a line of your code reaches the request.
Commit message bodies
The subject line goes, capped at 300 characters. The body is deliberately left out, and the tool that reads commit metadata says so in the code that omits it.
Your author email, remote URLs, or anything about other repositories
The request is assembled from one commit in one repository. There is no index of your code, no background copy, and nothing accumulated between reports.
How to read the report
Five sections, and the split between the first two is the whole design.
01Observed factsThe metadata the request carried, restated. Nothing here is generated: it is what GitAegis read from your repository, put in front of you so you can check what the rest of the report was reasoning over.
02InferenceWhat the model concluded from those facts. This is the part that can be wrong, and it is kept in its own section for exactly that reason.
03RecommendationWhat it suggests you do next. A suggestion, in a panel that cannot act on it.
04RiskWhat could go wrong around this commit, on the evidence available.
05UnknownsWhat this data cannot tell you. A report that omits this section reads as more certain than it is, so the model is required to produce one.
Observed facts came from your repository. Inference came from a model. A report that blends the two reads as authority, and this one is labelled a suggestion on its own face.
Every report names what produced it
Beneath the text: the provider, the model, and the line AI-generated suggestion; verify against the repository. When the redaction scanner replaced something, the count is there too.
A report is also marked with an AI suggestion badge while it is on screen. The point is that you can never mistake this panel for the deterministic surfaces beside it: the graph, the diff, the journal and Doctor state facts, and this states a reading of them.
It has no index of your repository
There is no embedding pass, no vector store and no background copy of your code. Each report is assembled from one commit at the moment you ask, and nothing carries over to the next one.
The trade is real and worth stating: it cannot answer a question about code you have not put in front of it, and it cannot notice a pattern across your history. What you get in exchange is that there is no copy of your work anywhere to reason about.
Nothing else in GitAegis needs an account
Recovery capsules, the Operation Preview drawer, the Flight Recorder, Lost Work, Safe Mode, Doctor and the whole Git toolkit are local, and they work signed out, offline, and on a machine that has never had an account on it.
This one feature is the exception, and it is opt-in twice over. If you never press the button, GitAegis behaves exactly as it did before it existed. How recovery capsules work →
What it does not do
Stated here rather than discovered when you need it to have done one of them.
It describes. It never acts.
It cannot run a Git operation. Not through an approval flow, not through a suggested action. Its recommendation is prose in a panel, and there is no handler behind it.
It cannot be wrong safely. An inference can be wrong, which is why it sits in its own section and why the report is labelled. Verify it against the repository before acting on it: the graph, the diff and the journal are right there.
It is one commit at a time. There is no report over a branch, a range, a release or a file’s history.
The boundaries around it
It needs a network and an account. It is the one thing in GitAegis that does. Offline, or signed out, it fails with a message rather than degrading into something less useful.
Ten reports a minute, and usage is counted. The rate limit is per account. Usage rows record the feature, the model and the token totals, for failures as well as successes. There is no plan quota, because there is nothing to buy.
It is the only AI capability in the build. No commit-message drafting, no conflict explanation, no Doctor-finding summary, no error explanation. Those are described on the AI Assist page as a thing that does not ship, and they still do not.
Consent is not versioned. It is recorded once, per feature, with the time it was granted. Nothing re-prompts you if the payload changes, so the payload is documented here and in the product rather than only in the dialog.
Questions about the AI commit report
Free edition · No account required
A recovery capsule before every risky Git operation.
You see the exact commands before they run, and the operation is refused if the capsule cannot be written.
Requires Git 2.38.0 or newer, already installed.
Every risky operation, in this order
- Previewthe exact commands, shown before anything runs
- Capsulerefs, index, staged and working changes, untracked files, operation state: written to disk first
- Executethe commands as shown, or not at all
- Journalplan, commands, capsule id, outcome