diff --git a/apps/web/src/chat/working-label.css b/apps/web/src/chat/working-label.css
new file mode 100644
index 000000000..de755144b
--- /dev/null
+++ b/apps/web/src/chat/working-label.css
@@ -0,0 +1,4 @@
+.chat-thread-working {
+ padding: 4px 0 4px 42px;
+ font-size: 13px;
+}
diff --git a/apps/web/src/chat/working-label.tsx b/apps/web/src/chat/working-label.tsx
new file mode 100644
index 000000000..bf18c050d
--- /dev/null
+++ b/apps/web/src/chat/working-label.tsx
@@ -0,0 +1,14 @@
+import { ThinkingLabel } from "@corbits/react-ui";
+
+import "./working-label.css";
+
+const VERBS = ["Thinking…", "Working on it…"];
+
+// Shown under the last message while the worker has a turn open.
+export function WorkingLabel() {
+ return (
+
+
+
+ );
+}
diff --git a/apps/web/src/pages/workbench-page.tsx b/apps/web/src/pages/workbench-page.tsx
index a58c56ea0..faebfff9d 100644
--- a/apps/web/src/pages/workbench-page.tsx
+++ b/apps/web/src/pages/workbench-page.tsx
@@ -28,6 +28,7 @@ import { VoiceOverlay } from "../voice/voice-overlay";
import { BenchDrawer } from "../bench/bench-drawer";
import { BenchPill } from "../bench/bench-pill";
import { PendingOpeningMessage } from "../bench/pending-opening-message";
+import { WorkingLabel } from "../chat/working-label";
import { ArtifactsTab } from "../bench/artifacts-tab";
import { markTurnPending, useWorkerStatus } from "../worker-status";
import { GrantsTab } from "../bench/grants-tab";
@@ -325,6 +326,7 @@ function Workbench({ workbenchTenantId }: { readonly workbenchTenantId: string }
workbenchTenantId={workbenchTenantId}
participants={participants.data ?? []}
/>
+ {workerStatus.tone === "working" ? : null}
{send.error === null ? null : (
{errorText(send.error)}