#6778: feat(typing): add configurable typingTtlSeconds option
docs
Cluster:
Messaging Platform Improvements
## Problem
The typing indicator TTL is currently hardcoded to 2 minutes (120 seconds). For long-running LLM operations—such as complex tool chains, slow model responses, or rate limit fallbacks—the typing indicator stops prematurely,
making the bot appear unresponsive even though it's still actively processing.
**Real-world scenario:** When using model fallback chains (e.g., primary → backup → CLI), a single request can take 5-10+ minutes. Users see the typing indicator stop after 2 minutes and assume the bot has crashed.
## Solution
Add `typingTtlSeconds` as a configurable option in both agent defaults and session config, following the exact pattern established by `typingIntervalSeconds`.
### Key points:
- **Default remains 120 seconds** — no breaking changes for existing installations
- **Configurable at agent level** via `agents.defaults.typingTtlSeconds`
- **Overridable per session** via `session.typingTtlSeconds`
- **Priority chain:** Agent config → Session config → Default (120s)
## Related Issues
This PR helps address:
- **#7192** - Typing indicator stops prematurely for slow models. Users can now configure `typingTtlSeconds` to extend the indicator duration for long-running inference.
- **#5637** - Typing indicator stops before TTS completes. Increasing `typingTtlSeconds` keeps the indicator active through longer dispatch phases.
Closes #7192
Helps mitigate #5637
## Changes
| File | Change |
|------|--------|
| `zod-schema.agent-defaults.ts` | Add Zod schema validation |
| `zod-schema.session.ts` | Add Zod schema validation |
| `types.agent-defaults.ts` | Add TypeScript type with JSDoc |
| `types.base.ts` | Add TypeScript type with JSDoc |
| `get-reply.ts` | Wire config value to typing controller |
| `typing.test.ts` | Add test coverage for TTL behavior |
| `docs/concepts/typing-indicators.md` | Document the new option |
## Usage
```json5
{
agents: {
defaults: { ...
Most Similar PRs
#20622: feat: add configurable typingTtlSeconds to config schema
by chungjchris · 2026-02-19
85.0%
#10746: feat: add 'deferred' typing mode to suppress typing indicator for N...
by r00k · 2026-02-06
69.6%
#6546: Reply: avoid typing before text in message mode
by aldoeliacim · 2026-02-01
63.5%
#14640: feat(agents): support per-agent temperature and maxTokens in agents...
by lailoo · 2026-02-12
63.1%
#22140: feat(config): add usageDefault to agent defaults for persistent /us...
by Mellowambience · 2026-02-20
61.7%
#20798: fix(process): Add delayMs parameter to send-keys for TUI compatibility
by Q00 · 2026-02-19
61.3%
#19816: feat(slack): add typingReaction config for DM typing indicator fall...
by dalefrieswthat · 2026-02-18
60.2%
#16403: feat: add readable timestamp to inbound_meta.v1 payload
by mcinteerj · 2026-02-14
60.0%
#23455: feat(tts) : add per-agent TTS configuration support
by jayy-77 · 2026-02-22
59.9%
#10197: fix: add missing allowAgents to agent defaults subagents schema
by Yida-Dev · 2026-02-06
58.7%