# Tool Calls

> Click a collapsed tool call in the terminal to see its full output, with a copy button.

Agents collapse their own tool output. You ask for a refactor, the agent reads six files and writes three, and each one leaves a single grey line where the content used to be. The output isn't gone, it's just folded away somewhere you can't reach without leaving the terminal.

In crystl those lines are clickable. Click one and the full input and output opens beside your session, with a copy button.

## Clicking a collapsed row

When an agent folds its output, it leaves a summary line like this:

```
⎿  … +97 lines (click to expand)
```

That row is a link. It's drawn in crystl's accent color at rest, picks up a dotted underline and a pointing-hand cursor on hover, and clicking it opens the [chat dock](#the-chat-dock) with that exact tool call expanded.

It works the same for Claude Code and Codex, both of which collapse long output this way. crystl recognizes each agent's own marker for a folded row, so an agent whose format isn't recognized keeps its rows as plain text; they still print, they just aren't clickable.

> **Where the wording comes from.** Agents write their own hint here, naming a key their TUI handles. crystl replaces that text with **click to expand**, because inside crystl the click is the gesture that works. It's a display-only change: selecting the row, copying it, or reading it back with `/screen` all return exactly what the agent wrote.

Clicking never changes your session. It reads the transcript, so no keystroke reaches the agent and nothing in your scrollback is rewritten.

## The chat dock

`Cmd + Y` opens the chat dock for the focused shard: the conversation rendered from the transcript rather than the terminal, so you can read it without the TUI in the way.

Tool calls appear there as their own rows, tagged with the agent that ran them. Click any row to expand it in place, click again to collapse. You don't need to have come from the terminal: the dock works on its own, and it's often the easier way to skim what an agent did while you were away.

### Copying the output

An expanded block carries a **copy button** in its corner. It copies the tool's full output, not the truncated summary, which is the thing you usually want: a stack trace to paste into an issue, a test failure to hand to another agent, a diff to check by eye.

## When it can't tell which call you meant

Matching a collapsed row back to a transcript entry is guesswork in a couple of cases: the same tool called repeatedly with similar arguments, or a scrollback long enough that the earlier calls have been truncated away.

When crystl can't make a confident match, it opens the dock at the most recent rows and expands nothing, rather than guessing. Expanding the wrong call would look like a bug and cost you more time than the click saved, so it declines instead. Scroll to the call you wanted and expand it there.

## Requirements

Click-to-expand needs [cavrn](/docs/metal-rendering/), crystl's recommended GPU renderer and the default, because the click has to report which row it landed on. If you've turned **use cavrn terminal** off in **Settings → general → terminal → TERMINAL RENDERING** and fallen back to **xterm**, the rows render normally but aren't clickable. The chat dock still works either way, so `Cmd + Y` and expanding rows there is the fallback.

## Related

- [History Navigator](/docs/conversation-history/): browse and search every session, past and present
- [Terminal GPU Rendering](/docs/metal-rendering/): what cavrn is and why the renderer matters
- [Keyboard Shortcuts](/docs/keyboard-shortcuts/): `Cmd + Y` and the rest

---
Source: https://crystl.dev/docs/tool-calls/
