On this pageOverview
Git and review

The Inbox

What happened since you last looked, what needed you in the last day, and every session with work you have not read yet, riskiest first.

The Inbox has four views, listed down its left side. Since you looked is one screen for everything that happened while you were away. Needs you lists what needed you in the last 24 hours, so a notification you missed is still there. Permissions lists every permission prompt waiting right now, so one answer can cover every worker asking for the same command. Review lists the sessions whose work is waiting for you to read it, across every space, with the riskiest at the top.

Open it with the Inbox button in the top bar, next to the phone button, or with Cmd+Shift+X. The Inbox opens as a panel under the button, over the workspace. The button counts the Needs you rows you have not answered plus the sessions waiting for review. The Inbox opens on Since you looked when it has something, then on Needs you while something there is unanswered, and on Review otherwise. Press Escape, click outside it, or click the button again to close it.

Since you looked

The view lists what happened since you last looked at it, in four sections:

Section What is in it
Finished since a time Each session that finished a turn, once, with how many turns, the lines it added and removed, and its latest verification verdict: Verified, Checks failed or Not verified (none while Mark unverified turns is off)
Pull requests Pull request opened, Pull request merged, and Pull request needs attention when it is your move on a pull request
Usage limits Hit its usage limit and Continued after the limit reset, one row per account however many of its chats stopped
Waiting on you Every approval, question, spend limit or blocked terminal not answered yet, however old

Waiting on you comes first because it is the only section that needs you to act. Each row shows the time on the right. Click a row to open what it names: a finished session or a limit opens its chat, a pull request opens its worktree, a waiting row opens its session at the card. A terminal session shows no lines or verdict. Lines come from checkpoints, so a session without them shows none. With nothing to show the view says Nothing finished since you last looked, and nothing is waiting on you., with an Open Review link while Review has rows.

The Inbox never opens by itself. Besides the button, open this view from the command palette (Cmd+K) with Since You Last Looked, or Session > Since You Last Looked in the menu bar.

What counts as looking

The view counts as seen when you leave it: you switch to another view, close the Inbox, open a row, or switch away from Tori while it is showing. Opening Tori without opening the view does not count, so a quick look at one chat during the night leaves the morning’s list alone.

While the view is open, its start stays put, so new work joins the list rather than replacing it. The next time you look, it starts from where you last saw it. The Mac and a paired phone share that point: read it on one and the other starts from there too. Tori keeps what happened since then for up to a week, across restarts.

Pull requests are only known for projects Tori polls, which is the active space. A merge that happens while Tori is closed shows up after it starts and polls again. A worktree removed before its merge was seen adds no row.

Needs you

Every time a session needed you, the view gets a row:

Row When
Waiting for approval A chat asked permission to run a tool
Asked a question A chat asked you a question
A worker asked a question A worker asked a question its chat or the autopilot passes on to you
Stopped at its spend limit A chat stopped at its budget
Waiting for you A terminal session is blocked. Tori cannot tell on what
Had a command blocked while you were away A session tried a command on the deny list while nobody was watching
Finished A chat finished a turn
Pull request needs attention Your branch’s pull request has a failing check or changes requested, or someone else’s asks for your review

Rows are grouped by project, the project with the newest row first, and newest first inside each group. Each row shows the session’s name (a branch for a pull request) and what it needed, with the time on the right and Yesterday in front for a row from the day before.

A turn that finishes while you are looking at that chat is listed already answered. A worker that the autopilot or its chat looks after adds no row when it finishes. One red check is one row, however many turns run on the branch while it stays red; the next red check after it goes green is a new row.

Answered rows

An answered row stays, dimmed and marked answered, until it is a day old.

  • A permission, a question, a spend limit, a blocked terminal or a blocked command is answered once the session stops needing you: you answered it, it moved on, or its tab closed. A blocked command also clears once you look at the session.
  • Finished and Pull request needs attention are answered once you look at the session: it is selected while Tori is in front, its chat tab is on screen, you open the row, or you open the session on your phone. A pull request row is also answered when its check turns green.

Rows still open when Tori starts again are shown answered, since Tori could not see what happened while it was closed. A session still waiting gets a new row.

Opening a row

Click a row to go to its session. A chat still waiting on an approval or a question opens with that card in view. A pull request row opens its worktree.

Permissions

The view lists every permission prompt a live session is waiting on, in every space. Rows are grouped by project, then by what was asked: the same tool asking to run the same command, or to touch the same file, path, URL or pattern, from the same kind of agent. Two Claude chats asking for pnpm test in different worktrees of a project share a group even when they described the command differently. A prompt outside every project groups only with prompts from the same folder, under Other: and the folder’s name. A prompt with nothing to compare, such as Codex’s Edit files, always stands alone.

Each group shows the command, the agent, the tool and how many are waiting, and for Claude the rule it will keep, such as Claude will remember Bash(pnpm test). Under it is one row per waiting chat, named by its folder.

  • Always allow for all and a number (Always allow when only one waits) answers every prompt in the group with Always in this project, each through its own agent. What each agent remembers, and where, is in Answer a permission prompt.
  • Deny, at the end of a row, denies that one prompt. There is no deny for a whole group.
  • Click a row to open its chat at the prompt, for Allow once, Allow for this session or Deny with feedback.

The allow covers the prompts on screen when you click. A prompt that arrives in the meantime stays waiting, and one answered or timed out in the meantime is skipped. If an answer does not reach its agent, a message at the bottom of the window says so. The list keeps itself up to date as prompts come and go, and with nothing waiting it says No worker is waiting on a permission.

A waiting permission still shows in Needs you as Waiting for approval, and the Inbox button counts it there, once.

Review

What is listed

A session is listed when all of these hold:

  • It runs in one of your projects.
  • It sent a prompt after you last marked it reviewed.
  • Its folder has uncommitted changes, or its branch has commits not pushed yet.
  • It changed something since you last marked it reviewed. For a session with checkpoints, that means its own files differ. Without checkpoints, it means at least one turn edited code.

Once you commit and push the work and the folder is clean, the session drops off the list by itself, reviewed or not.

The Inbox starts empty. The first time Tori runs with it, everything that happened before counts as already read, and only new turns show up.

Reading a row

Rows are grouped by score, riskiest first:

Group Score
High risk 60 and up
Worth a look 25 to 59
Small and clean under 25

Each row shows:

  • The score, on the left, with a short bar under it. Higher means read it sooner.
  • The session’s name, with Working after it while the session is still running, then its folder, its agent and the lines it changed.
  • Its last reply, as a summary of where it stopped.
  • The signals that make up the score. A secret read, failed checks, deleted test files and changed CI, auth or secret files show as red pills; the rest are one line under them.
  • The second opinion, on its own line, once one was asked for.

Click a row to go to the session. Tori opens the Changes panel on the Checkpoints tab, at the session’s first turn you have not reviewed, where each file opens its diff with Who wrote this hunk.

The signals

The score adds up fixed points. Each signal counts once per row, however many times it happened. Its label shows how many times.

Signal Points What it means
Secret read 30 A turn read or named a secret-shaped file, such as .env or a key
Checks failed 25 The last check a turn ran after its last edit failed
Test files deleted 25 The session deleted a test file: one in a test, tests, __tests__ or spec folder, or named like *.test.*, *_test.* or test_*
CI, auth or secret file 20 The session changed a CI file (.github/workflows, .gitlab-ci.yml and the like), a file with auth, login, OAuth, credential or permission in its path, or a secret-shaped file
Manifest or lockfile 15 The session changed a dependency manifest or lockfile, such as package.json, pnpm-lock.yaml, Cargo.toml or go.sum
Outside the named folders 15 The session changed files outside the folders its first prompt or its issue named
Would conflict with the base 20 The session’s branch would conflict with its base on these files. See Conflict radar
Also being changed in another worktree 15 A live session in another worktree of the project is changing these files too. See Conflict radar
Shared with another session 10 Another session in the same folder also wrote one of these files
Edit without reading 10 The session changed a file it never looked at first
Unverified turn 10 A turn changed code and nothing it ran checked it
Lines up to 30 Lines the session added and removed since you last reviewed it
No checkpoints 0 Tori has no snapshot to count lines from, so lines and the file signals are missing

Lines grow slowly: 10 lines are worth about 10 points, 100 about 20, and the count stops adding at about 1,000. A small change that read a secret file still ranks above a large clean one.

Only turns after your last review count, so a row that comes back shows the new work, not the old signals again.

Outside the named folders

Tori reads the session’s first prompt, and the issue its branch was started from when there is one, for paths: a word with a / in it, or a file name with an extension, whose first part exists in the project. src/review/mod.rs names the src/review folder, README.md names that file. Every changed file outside them counts. When nothing in the prompt or the issue looks like a path, this signal stays off. Tori fetches the issue once per session while it runs.

Mark reviewed

The check mark at the end of a row’s title, Mark reviewed, takes the row off the list until the session starts a new turn and changes something.

You cannot mark a session that is still working, or one waiting on a question or an approval: its turn has not finished, and later edits in the same turn would go unseen. If a new turn starts between the moment you looked and your click, Tori refuses too and asks you to look again.

Deleting a session also removes its review mark.

The icon before it, Second opinion, asks another agent to review the same work, and the row shows how it went. Marking the row reviewed deletes its findings. See Second opinion.

On the phone

A paired phone has the same four views, as tabs. On Permissions, the groups and buttons are the same as on the Mac. On Review, Approve is Mark reviewed and Reply messages a live session. See Using the phone app. An agent cannot read or mark either list itself: only you, at the Mac or on a paired phone.