HTTPie --ignore-stdin: Stop Hangs in Pipelines
http --ignore-stdin tells HTTPie to ignore piped or redirected stdin instead of treating it as the request body.
When HTTPie detects that stdin is not a terminal, it reads stdin as the request body. In a CI shell that can silently turn a GET into a hanging read; --ignore-stdin disables that behavior.
What it does
By default HTTPie reads redirected stdin and uses it as the request body. In non-interactive environments (CI runners, cron, subshells) stdin is often a pipe that never closes, so HTTPie blocks forever. --ignore-stdin makes HTTPie ignore stdin entirely and send the request immediately.
Common usage
http --ignore-stdin GET example.com/health
# in a loop or subshell where stdin is a pipe
for i in 1 2 3; do http --ignore-stdin GET :8080/ping; doneOptions
| Flag | What it does |
|---|---|
| --ignore-stdin | Do not read stdin, even when it is redirected |
| --quiet, -q | Suppress output; combine for a pure exit-code check |
| --timeout <sec> | Bound the request so a stuck call still ends |
In CI
Make --ignore-stdin a habit for every HTTPie call in a pipeline unless you are deliberately sending a body from stdin. It is the single most common cause of HTTPie jobs that appear to hang until the runner timeout kills them.
Common errors in CI
A job that stalls on an http GET with no error and is eventually killed by the runner is HTTPie blocking on stdin; add --ignore-stdin. If you actually need to send a body, keep stdin but add --timeout so a never-closing pipe cannot hang indefinitely.