HTTPie détecte s’il tourne dans un TTY. Quand il n’y en a pas, comme lorsque Claude Code l’appelle comme subprocess, HTTPie suppose que stdin pourrait avoir des données à venir et interprète la requête comme un POST, même si tu voulais faire un GET.
La correction, c’est --ignore-stdin :
http --ignore-stdin GET localhost:3000/things
Le piège : une fois que tu dis à Claude Code de toujours utiliser --ignore-stdin, il va
aussi l’utiliser quand tu pipes des données, ce qui brise complètement ce cas d’utilisation :
# Ça va briser - --ignore-stdin jette le body pipé
cat payload.json | http --ignore-stdin POST localhost:3000/things
Donc --ignore-stdin est le bon défaut pour les lectures, mais il faut le retirer quand
on pipe vraiment stdin pour des écritures. Ça vaut la peine de le préciser explicitement dans
tes instructions à Claude Code, sinon il va cargo-culter --ignore-stdin partout après que
tu en aies parlé une fois.