See your agent's decisions.

You didn't make all of them. Your name is still on the PR.

$ curl https://tern.sh/install | bashcontent_copyCopy install command
or read a Sentry PR
An agent hook

Runs in your agent.

When an agent makes a decision you'll care about, Tern clarifies. You'll see when it descoped your fix or misinterpreted its own spec. The mechanical work stays with the agent.

Claude Code · billing
● Billing client timeout

Added a 5s timeout on the billing client.

11 files changed
Stop hook

Retries landed on 3 of 11 outbound calls. Apply them everywhere, nowhere, or leave these three?

❯ 1. Retries everywhere (Recommended)
Treat this as the rule for outbound calls.
2. Don't add retries
Revert the three. Fail closed, like the rest.
3. Leave it
These three are fine. Don't ask about this.

From the agent turn to the PR.

1

Decisions you care about.

Tern reads your agent sessions on your laptop and assembles a lens, so it knows whether a decision is relevant to you.

It names the calls that would change the product: a descoped fix, a spec it misread.

~/repos/api
$ tern hook install
Claude CodeStop hook registered
Codexready
Cursorready
Copilot CLIready

Same session as yesterday.

2

Steer easily.

Tern asks when there's a reasonable alternative you'd care to know about. Answer in the session. Your agent changes the code, and Tern records what you meant.

What you already decided about this code comes back later. You won't keep talking to Tern about the same things.

Claude Code · billing
Claude

Retries landed on 3 of 11 outbound calls. Apply them everywhere, nowhere, or leave these three?

1. Retries everywhere
2. Don't add retries
3. Leave it
3

Share with your team.

When you open a PR, Tern creates a Tour, walking your reviewer through your approach.

The PR is grouped by what you intended. Anything the agent added on its own is flagged.

tern-sh/api#2904Copy link
2/3 READnext →
1v2 users service + handler+88 −0
2Dark-launch traffic split+24 −2
3v1 falls back to v2+3 −1

On a store miss it returns whatever the v2 service hands back, coupling v1 to v2 at runtime.

api/v1/users.go+3 −1
return nil, err
39+ // fall back to v2
40+ r, _ := v2.Get(ctx, id)
41+ return v2ToV1(r.User), nil
no prompt found

See a Sentry pull request.

#119682Rebuild issue status banner on activity chips. Click around.

getsentry/sentry#119682scttcper/resolution-reason-chips09d2388 → 6e0330b

Rebuild issue status banner on activity chips

10 files +794 −109
1Render resolution reasons with activity chips+117 −9
2Pull the status banner out of GroupActions+172 −41
3Share getArchiveDetails with the banner+60 −57
Not interesting
Add label prop to progress marker+7 −2
Tests and stories for the banner+438 −0

5 more from getsentry/sentry

Install on your laptop.
curl https://tern.sh/install | bashcontent_copy
tern tour # anytime, on any branchcontent_copy
30 seconds. No email. No code leaves your machine.