I'm not sure if this is a bug or a feature, but regardless, I've filed an issue on your behalf.
In summary, assuming this is a bug, it's because the field values are being padded by a minimum length specified in the source code (force/display.go, lines 362-365), which I fixed by specifying a minimum length of 0 in my patch. It looks like I'll need to tweak it to allow "<nil>
" values to be filtered out, too.
I was able to quickly patch this by changing just a few lines of code, but it seems that building a new version broke the OAuth login feature (possibly because I'm going to the wrong URL or something?) If you're interested, I can create a fork that includes the tweaks when I get time.
Edit:
@dcarroll says:
Right, ok, I've seen this. The original code tried to format the output
nicely for the screen, hence, taking the longest field in the column, even
it was the header, and use that to pad the output. I may have a fix for
this, so I'll take a look.
So, the original function was to output nice, evenly matched lines (same as omitting --format:csv) for human consumption, and was probably left in there as a result. Looks like they'll get this fixed up for you, given time.