User GuidePluginsAPI Reference

See why a line exists

Find the agent turn and the request behind any line of code, and tell a real answer apart from a line taiku simply cannot account for.

git blame tells you who last touched a line and in which commit. It rarely tells you why. When an agent edits a file inside a taiku session, taiku records the reason alongside the change: the sentence the agent wrote before the edit, the request you made that started the work, and the session it happened in. You can read that back for any line.

In the blame view

Open a file and switch the tile to Blame. Click a gutter entry and the commit card appears. Expand Why line N exists and the card fills in with the attribution: how confident it is, what the agent said it was doing, what you had asked for, and which session answered.

If nothing in taiku wrote the line, the card says so in as many words. If taiku could not work out the answer, it says that instead, which is a different thing and is never dressed up as the first.

From the terminal

taiku why src/lib/session.ts:412

Your request comes first, then the agent's sentence, the confidence tier beside the file and commit, and the session. Leave the line number off to list every recorded change in the file:

taiku why src/lib/session.ts

To read the whole conversation behind a line rather than the one sentence, add --open and taiku prints the transcript to pick up:

taiku why src/lib/session.ts:412 --open

Read the confidence first

Every answer carries a tier, on the line that names the file and commit. It is the part to trust, and the part to quote.

TierWhat it means
ExactEvery line of the change matched one recorded edit.
PartialMost lines of the change matched one recorded edit.
TurnNo single edit matched. One agent turn's work contains these lines.
RunA shell command's window and files cover these lines.
Not taikuNothing in taiku touched this line.
UnknownNo answer. Something the lookup needs was not available.

Not taiku and Unknown are not the same answer. "Not taiku" means the lookup ran all the way through and found nobody, so the line was written outside a tracked session. "Unknown" means a step could not run, so nothing at all is claimed about the line. taiku will tell you which step, and it will never show you the second while calling it the first.

Run answers only exist where diff tracking was on for the session, since that is what records what a command changed. Turn it on from the Activity panel, or start the session with taiku --track-repo-diffs so it is on from the first command. Either way the session needs to be open somewhere while the commands run; a session nobody has open records nothing.

Turn answers do not appear on Windows. Reading a turn means knowing which program currently holds a terminal, and Windows terminals do not report that, so taiku will not guess at it. Nothing else changes: an agent that writes a session file still answers Exact or Partial, which is the better answer anyway, and anything else that edits a file in a taiku terminal still answers Run. The gap shows up only for an agent that keeps no session file, where macOS and Linux would have read the screen instead.

When taiku will not name anybody

Sometimes an answer arrives with a confidence but no session, no request and no sentence, and says the name was withheld. That is not a gap in the record. Two separate pieces of work landed inside the same block of lines and taiku cannot separate them, so rather than putting one name over the other's lines it shows you how strong the evidence is and stops there.

You still get something to work with. The confidence tells you what kind of work it was, and the commit is named, so the commit diff and the runs around it are where to look next. What you do not get is a session to open, because there are two and picking one would be a guess.

Reasons you may see under Unknown: the line's commit is a merge and has no single diff to sign, a note on the commit is damaged, or taiku has not annotated that commit yet. None of them is evidence that the line was written by hand.

Search every recorded change

To find work by what it was for rather than by where it landed:

taiku why --search "rate limit"

This looks through the agents' sentences, your requests, the shell commands that made changes, and the file paths. Each hit shows the commit, the file and line, the tier, and the text that matched.

When the answer names a different file

Sometimes the answer arrives with a note that it was matched by content rather than by position, and it names another file. That is not a mistake. The same lines can move between files through a rebase or a squash, and taiku follows the content. The file and line it names is where the change was recorded, so that is the one to go and read.

If a line has no answer

taiku can only account for changes made inside a session it was watching. Work done in another editor, a change pulled in from a branch someone else wrote, or anything from before you started using taiku on the repository will come back as Not taiku. That is an accurate answer, not a gap.

Sharing answers with your team

Answers travel with the repository rather than living on one machine, so a teammate who fetches gets the same account of a line that you have. If a fetch ever reports that it refused to update refs/notes/taiku, nothing has been lost and nothing is broken: git declined to overwrite one copy of the answers with another. Most often it means your copy is simply ahead, and pushing settles it. The steps for working out which, and what to do in each case, are in specs/change-provenance/notes-ref-reconciliation.md.

On this page