I spent two hours debugging why a hosting provider’s API was returning malformed responses. Every curl call worked fine on a colleague’s machine but failed on mine with cryptic JSON parse errors. Same command, same endpoint, same credentials.
The Symptom
curl -u "$API_USER:$API_PASS" https://api.hosting-provider.com/server
My machine: garbled response, missing headers, API returning HTML instead of JSON.
Colleague’s machine: clean JSON response.
The Debug
I added -v for verbose output and noticed something odd in the request headers. The User-Agent was curlie/1.7.2 instead of curl/8.x.x.
> User-Agent: curlie/1.7.2
The Cause
I had curlie installed via Homebrew — a curl frontend that formats output with colors and httpie-style headers. At some point, either I or a dotfile had aliased it:
alias curl='curlie'
curlie wraps curl but changes the request behavior:
- Adds different default headers
- Modifies content negotiation
- Changes how authentication is passed in certain edge cases
The hosting API was picky about request format. curlie’s modifications were enough to break authentication or trigger a different response format.
The Fix
unalias curl
That’s it. Two hours of debugging, one line fix. The actual curl binary was fine the whole time — it was never being called.
Takeaway
If an HTTP client is behaving differently on your machine than someone else’s, check which curl (or type curl). Shell aliases and wrapper tools like curlie, httpie, or xh can silently replace curl and change request behavior in subtle ways. Especially dangerous when provisioning infrastructure via APIs where the request format matters.