Everything an assistant does through gbrain is written down as it happens. Not a
sample, not a summary: every call.

<figure>
  <a href="/docs/tools/activity.png"><picture>
    <source srcset="/docs/tools/activity-dark.png" media="(prefers-color-scheme: dark)">
    <img src="/docs/tools/activity.png" alt="The Activity tab of a client. A table with columns for application, action, connection, cost and when. Rows read: GBrain, access token refreshed, ChatGPT, three hours ago; and more of the same going back a week.">
  </picture></a>
  <figcaption><strong>One row per call.</strong> Which application answered, what was asked of it, which connection asked, and when. Housekeeping like a token refresh is on the record too, because a gap in the log is worse than a boring row.</figcaption>
</figure>

## Three places to read it

**Your activity** is everything, across every client. Start here when you want to
know what happened today.

**A client's activity** is one bundle of access: everything ChatGPT did, wherever
it was plugged in.

**A connection's activity** is one thing plugged in: ChatGPT on the web, but not
ChatGPT on your desktop.

## What a row tells you

The **application** it went through, so you can see which account answered when
you have connected more than one. The **action** in plain language, not a
function name. The **connection** that made the call. The **cost**, where the
call was a metered lookup. And **when**.

## What to do with it

**Check a claim.** An assistant that says it sent something either has a row for
it or does not.

**Find the runaway.** A job that loops shows as the same call repeating. That is
usually what a [limit](/docs/tools/limits) caught before you noticed.

**Decide what to turn down.** A client that has not made a call in a month
probably does not need the access it has.

The log is yours and it is not editable. An assistant can read its own history,
which is how it answers "what did you already do today," but it cannot remove a
row from it.