SIGN IN SIGN UP

Block generic tool input and document idle timeouts

#### Context

Docs called turn timeout a total cap, while runtime uses silence. Generic tool-input prompts also received fabricated answers, and approval-looking option labels alone are not enough to identify MCP approval prompts.

#### TL;DR

*Document idle timeouts and block generic tool input.*

#### Summary

- Document `turn_timeout_ms` as a reset-on-update silence interval.
- Add coverage for active stream updates and silent turns.
- Keep auto-approval only for recognized MCP approval question IDs.
- Block freeform and generic option-based tool input, including Allow/Deny choices.

#### Alternatives

- A total-runtime deadline was rejected; healthy long turns should stay alive while updates continue.
- Matching approval-looking labels alone was rejected because generic prompts can use the same words.

#### Test Plan

- [x] `HEX_HOME=/private/tmp/symphony-hex mise exec -- make -C elixir all`
- [x] `mise exec -- mix test test/symphony_elixir/app_server_test.exs:619 test/symphony_elixir/app_server_test.exs:788`
- [x] `mise exec -- mix test test/symphony_elixir/app_server_test.exs`
A
Alex Kotliarskyi committed
3c372fa1f32a4d573a7bb9fa0cc101e16add63c3
Parent: cbd2158
Committed by GitHub <noreply@github.com> on 7/20/2026, 10:14:50 PM