Hook runs and changes in chat

A hook works quietly, but the chat keeps a record of it: every run that has something to report leaves a row, and every hook DataMind Oda writes, changes or deletes leaves a card. This page shows how to read both.

These rows and cards are part of the desktop app and the VS Code extension; in the web app they do not appear. What hooks are, and where you manage them, is on Hooks; Trust a folder's hooks covers trust, and Restore a hooks file version covers saved versions.

Read a hook run

What the run summary says

SummaryWhat it means
added a reminderThe hook passed guidance to Oda; open the row to read it under Reminder for the model.
blocked: {reason}The hook stopped the step it ran on, so it did not go ahead. The first line of its reason shows after blocked:; with no reason, the first line of the error output stands in, and with neither the row reads blocked.
asked for approvalThe hook asked you to confirm the step it ran on before it could go ahead.
asked to stopThe hook asked for the run to stop; the request is recorded on the row.
failed with exit code {code}The hook's command exited with an error; open the row for its error output.
could not runThe run produced no result, so no exit code was recorded.
stopped before it finishedThe run was stopped before it finished.
A line of the hook's messageA plain run that recorded a message shows its first line; open the row for the whole text under Message.

Open a run for the details

A finished row opens to show:

Read a hook write card

Questions, answered

Where does the text on a hook run row come from?

The row is labelled with the hook's own status message. A hook without one is labelled with its event and matcher, for example PostToolUse · Write, and reads Running the {event} hook while it runs.

Can I open a run while it is still running?

No. The row stays collapsed while the hook runs; it opens once the run has finished and there is something to read.

Why did a hook run disappear from the chat when it finished?

Because it finished with nothing to report. A quiet, plain run leaves no row, so if the row had appeared while the hook ran, it goes away when the run ends. Runs that block, ask, stop, fail or record a message keep their row.

What does added a reminder mean?

The hook passed a piece of guidance to Oda. Open the row to read it under Reminder for the model.

What does blocked mean on a hook run?

The hook stopped the step it ran on, so the step did not go ahead. When the hook recorded a reason, its first line shows after blocked:; with no reason, the first line of the error output stands in.

What does asked for approval mean?

The hook asked you to confirm the step it ran on before the step could go ahead.

What does asked to stop mean?

The hook asked for the run to stop. The request is recorded on the row; the run itself is not halted by it.

What does could not run mean?

The run produced no result, so no exit code was recorded. Open the row for anything it recorded.

Why does a failed hook run show an exit code?

The hook's command ran and ended with an error. The code it reported sits in the summary; open the row for the error output under Error output.

What does stopped before it finished mean?

The run was stopped before it could finish, so there is no result. On a write card, the same line means the write was stopped before it finished, and Result shows what it reported.

Where can I check exactly what a hook write changed?

Open the write's card: Event, Matcher, Command and File show what Oda wrote. The file's earlier state is kept as a version you can restore, described on Restore a hooks file version.

How do I know whether a hook write was approved?

Open the card and read its note. You approved this write. means the write went ahead with your approval; Full access wrote it without an approval prompt. means the session ran in Full access and no prompt appeared. The outcome on the card marks that case too: created without asking (Full access).