The screen froze. The cursor blinked. The deploy was stuck.
If you have ever seen Mercurial hang on tty, you know the feeling. Minutes turn to hours. The fix is not obvious. You search logs, trace processes, and double-check every hook. But the truth is simple: Mercurial over a tty can trigger unexpected interactive prompts, block automation, and grind CI pipelines into dead stops.
Mercurial tty issues appear when an interactive terminal session collides with expected non-interactive flows. Hooks that ask for passwords, scripts that prompt for confirmation, or extensions that print to a live shell—they all behave differently when a tty is detected. For local debugging this might be convenient. For automated builds, it’s deadly.
This happens because a tty changes the way processes think about input and output. Mercurial detects a terminal and may assume it can interact with you. Piped commands and background jobs get trapped when the flow expects user input that never comes. The result isn’t an error—just a silent wall.