---
title: "Manage threads"
description: "Organize ongoing work with thread statuses, notes, transcript exports, and history."
canonical_url: "https://hoplite.sh/docs/threads/manage"
markdown_url: "https://hoplite.sh/docs/threads/manage.md"
---

# Manage threads
URL: /docs/threads/manage
LLM index: /llms.txt
Description: Organize ongoing work with thread statuses, notes, transcript exports, and history.
Related: /docs/threads/run, /docs/threads/cost, /docs/agent/slash-commands

# Manage threads

Keep concurrent work easy to find and follow with thread statuses, titles, and notes. Export transcripts when you need to carry the conversation into another tool, and use organization history to revisit earlier work.

## Thread statuses

| Status | Meaning |
| --- | --- |
| `queued` | A run is waiting to start |
| `running` | The agent is actively working |
| `waiting` | The agent is paused — usually waiting on your approval or input |
| `blocked` | The run can't proceed without you |
| `ready` | The agent finished and is waiting for your next message |
| `failed` | The last run errored — [retry execution](/docs/threads/run#retry-and-checkpoint-restore) |
| `archived` | The thread is closed out |

## Thread list groups

The sidebar groups threads into collapsible **Ready**, **Needs attention**, **In progress**, **Failed**, and **Archived** sections. Pull-request state participates in grouping: conflicts, failing checks, and unresolved comments can move an otherwise finished thread into **Needs attention**, while running checks keep work in progress. Hoplite remembers which sections you collapse.

Transitions among `queued`, `running`, `waiting`, `blocked`, and `ready` appear
after the new state has remained stable for five seconds, which keeps brief
backend handoffs from bouncing rows between groups. Initial state, `failed`, and
`archived` remain immediate, and run actions always use the authoritative state
even while a row briefly shows its previous status.

Archived threads leave the active groups and collect in the collapsible **Archived** section at the bottom of the list. Open it to find and unarchive earlier work.

Threads started by automations are excluded from the thread list by default so
unattended runs do not crowd out work started by people. Open the thread filter
and enable **Include threads started by automations** to show them; this applies
to both **Mine** and **Everyone**, and Hoplite remembers the choice for the
current browser session. Automation run history still links directly to every
thread whether or not the filter is enabled.

## Titles and notes

Thread titles are generated automatically from the opening and recent
conversation context. They can be a concise phrase or short sentence of up to
12 words and 100 characters; attachments and incidental actions are treated as
evidence rather than the subject. The agent can correct a materially vague or
outdated generated title as the purpose becomes clearer, but does not churn an
already accurate one.

Use `/rename <new title>` to override the title, and `/note <text>` to pin a note to the thread — handy for context the whole team should see. Right-click (or long-press) a cloud thread row for a context menu with actions like **Open in new tab**.

When viewing another member's thread, choose **Add to my threads** from that menu to become a participant and include it in your **My threads** view. This follows the thread without posting a message.

## Archive or delete a thread with an open PR

If a thread has an open pull request, Hoplite asks whether to leave it open, convert it to a draft, or close it before archiving or deleting the thread. Draft is the recommended archive choice because the work may resume; close is the recommended delete choice, and you can include an explanatory PR comment.

If GitHub rejects or fails the PR update, Hoplite tells you the pull request wasn't updated. An archive still goes ahead, because it is reversible, and a separate notice reports whether the archive itself succeeded. A delete does not go ahead, because it is permanent and you asked for the PR to be handled first. A PR that turns out to be already closed or merged is left as it is. When you archive several threads in quick succession, their PR updates run one at a time, and cancelling one that is still queued skips both its PR update and its archive or delete.

Workspace owners and admins can set separate archive and delete defaults under **Settings → Workspace → General**, and can either ask every time or apply those defaults automatically. The same area controls automatic archival when a linked PR becomes merged or closed; Hoplite archives the linked thread and its workspace only when no other open linked PR still needs them.

## Export a transcript

Open the thread actions menu and select **Export transcript…** to download the thread. Pick a detail level, a format, and whether `full` exports should nest each subagent's own transcript. The same options are available through the API at `GET /api/threads/{id}/export` (see the [API reference](/docs/api/exportThreadTranscript)) and through the `hoplite_call_api` MCP tool.

| Level | What you get |
| --- | --- |
| **Messages** | Your prompts and Hoplite's replies, plus any run failure the thread showed you. |
| **Messages + activity** | The above plus one readable line per tool call, in the same words as the thread timeline ("Read file X", "Ran `pnpm test` (exit 0)", "Opened PR #123"). No raw payloads. |
| **Full** | Everything: redacted tool inputs and outputs, nested subagent transcripts, compaction summaries marked as such, the resolved model per run, and failures. |

Two formats are available. **Markdown** has a heading per message, a bullet per tool call, fenced blocks for commands and outputs, and collapsible details at the full level. **JSON** follows the versioned `TranscriptExport` schema (`schemaVersion: 1`) documented in the API reference, which is independent of Hoplite's internal event tables so files you keep stay readable.

Every level applies the same redaction the thread UI does: private execution context, queued prompts, and model replay data never appear, and secrets inside tool payloads are scrubbed. Attachments are referenced by name; when the workspace allows public media sharing, each also carries a signed link that expires after seven days.

## Search organization history

Authorized organization-level agent sessions can search prior normal, project-backed threads that the invoking user is already allowed to access. Search returns compact excerpts, and the agent can retrieve a selected public user or assistant message for context.

<Callout type="info" title="Scoped by design">
Historical thread text is treated as reference material, never as instructions, and this does not give ordinary thread runs unrestricted access to workspace history.
</Callout>

## Sitemap

Sitemap discovery is not enabled for this deployment.
