@@ -15,7 +15,8 @@ When `agents.defaults.typingMode` is **unset**, OpenClaw keeps the legacy behavi
1515
1616- ** Direct chats** : typing starts immediately once the model loop begins.
1717- ** Group chats with a mention** : typing starts immediately.
18- - ** Group chats without a mention** : typing starts only when message text begins streaming.
18+ - ** Group chats without a mention** : typing starts when the admitted run has
19+ user-visible activity, such as harness execution activity or message text.
1920- ** Heartbeat runs** : typing starts when the heartbeat run begins if the
2021 resolved heartbeat target is a typing-capable chat and typing is not disabled.
2122
@@ -26,13 +27,14 @@ Set `agents.defaults.typingMode` to one of:
2627- ` never ` - no typing indicator, ever.
2728- ` instant ` - start typing ** as soon as the model loop begins** , even if the run
2829 later returns only the silent reply token.
29- - ` thinking ` - start typing on the ** first reasoning delta** (requires
30- ` reasoningLevel: "stream" ` for the run).
31- - ` message ` - start typing on the ** first non-silent text delta** (ignores
32- the ` NO_REPLY ` silent token).
30+ - ` thinking ` - start typing on the ** first reasoning delta** or on active
31+ harness execution after the turn is accepted.
32+ - ` message ` - start typing on the ** first user-visible reply activity** , such as
33+ active harness execution or a non-silent text delta. Silent reply tokens such
34+ as ` NO_REPLY ` do not count as text activity.
3335
3436Order of "how early it fires":
35- ` never ` → ` message ` → ` thinking ` → ` instant `
37+ ` never ` → ` message ` / ` thinking ` → ` instant `
3638
3739## Configuration
3840
@@ -62,11 +64,10 @@ Override mode or cadence per session:
6264
6365## Notes
6466
65- - ` message ` mode won't show typing for silent-only replies when the whole
66- payload is the exact silent token (for example ` NO_REPLY ` / ` no_reply ` ,
67- matched case-insensitively).
68- - ` thinking ` only fires if the run streams reasoning (` reasoningLevel: "stream" ` ).
69- If the model doesn't emit reasoning deltas, typing won't start.
67+ - ` message ` mode does not start from silent reply tokens, but active execution
68+ can still show typing before any assistant text is available.
69+ - ` thinking ` still reacts to streamed reasoning (` reasoningLevel: "stream" ` ),
70+ and it can also start from active execution before reasoning deltas arrive.
7071- Heartbeat typing is a liveness signal for the resolved delivery target. It
7172 starts at heartbeat run start instead of following ` message ` or ` thinking `
7273 stream timing. Set ` typingMode: "never" ` to disable it.
0 commit comments