Result: The cursor froze. Crosh did not crash, but it stopped accepting keyboard input for 3 seconds. After processing, the command executed.
Date: Draft Topic: Shell limits & buffer overflows in crosh
So, what happens when you try to break them? What is the you can type before Crosh gives up?
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... (32,767 times) 0 Execution time: ~400ms (mostly rendering) Shell sanity after execution: Intact. Final Verdict The longest command in Crosh is 32,767 characters using an external binary, or 131,071 characters using a shell built-in. longest command in crosh
echo [32,767 copies of the letter 'A'] At character 32,768, Crosh returns:
For example, using a printf built-in (or just pressing Tab to trigger auto-complete), the buffer limit becomes —that is 2^17 - 1 .
bash: /bin/echo: Argument list too long The echo command is a built-in in many shells, but in Crosh's restricted environment, echo often forks to /bin/echo . That hits ARG_MAX . Result: The cursor froze
We found the wall. After narrowing it down, the longest successful command in Crosh is exactly:
Crosh doesn't crash—it simply respects the POSIX ARG_MAX limit. Chrome OS’s little debug shell is more robust than it looks.
Why this number? It is a classic computing limit: (the maximum value of a signed 16-bit integer). Date: Draft Topic: Shell limits & buffer overflows
If you have ever opened crosh (Ctrl+Alt+T) on a Chromebook, you know it’s not a full Linux terminal. It’s a restricted shell designed for debugging, network diagnostics, and ping tests. But every shell has limits.
I decided to find out. In a standard Bash shell on Linux, the limit is usually around 128KB to 1MB (defined by ARG_MAX ). Crosh, however, is different. It is built on ash (Almquist shell) with a custom frontend running inside the Chrome browser process.
The command:
However, if you use a that doesn't require forking, the limit changes.