[Bug]: Editing the auto-settle days field autosaves intermediate values and immediately settles threads (14 -> 1 -> 30 settled all threads older than 1 day)#24041

opened7d agobyDDam98

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Have several threads whose last activity is about 2 days old (in my case, 7 threads last active on 2026-10-21).
  2. Open Settings and find the auto-settle inactivity setting (sidebarAutoSettleAfterDays). Its value is 14.
  3. Edit the number by keyboard: put the cursor after 4 and press Backspace. The field now shows 1.
  4. Type 30 to get the value you want (the field ends at 30).

Expected behavior

Intermediate values typed while editing are not applied. The setting is saved when the edit is done (blur, Enter, or a debounce). Or, at least, lowering the threshold does not settle threads in the background without a warning.

Actual behavior

Autosave writes the intermediate value 1 to the server. The settlement sweep runs about one second later with the 1-day threshold and settles every thread inactive for more than one day. When the value then becomes 30, the settled threads stay settled. So one Backspace in a number field settles all threads older than one day, without confirmation and without undo.

In my case: 7 user threads and 489 hidden subagent threads were settled in the same second. The thread.settled events have settledAt backdated to the last activity of each thread, so in the sidebar it looks like the threads settled themselves 2 days ago.

Impact

Major degradation or frequent failure

Version or commit

T3 Code (Beta) 0.1.2

Environment

macOS 26 (Darwin 25.6.0), Apple Silicon, desktop app. Provider: Claude (claudeAgent) and Codex.

Logs or stack traces

Times are UTC. Local time is UTC+2.

1server.trace.ndjson: server.updateSettings at 09:09:23, 09:09:42, 09:09:57, 09:10:01, 09:10:02 (all Success)
2orchestration_events: 496 x thread.settled, occurred_at 2026-10-23T09:09:57Z .. 09:09:58Z,
3 command_id prefix "server:auto-settle:...", actor_kind "server"
4 payload: "settledOverride":"settled", "settledAt":"2026-10-21T14:03:..." (last activity of the thread)
5settings.json: sidebarAutoSettleAfterDays 14 (before) -> 30 (after, file written 09:10:02)

Workaround

Unsettle the threads by hand from the sidebar, one by one. To avoid the bug, select the whole value and type the new number, so that no lower intermediate value is saved.

Related: #12418 (NumberField for the auto-settle inactivity days input), #23949 (bulk settle without confirmation, 5 s undo).