SQlite release 3.33.0 change 6(b): https://www.sqlite.org/releaselog/3_33_0.html seems to break the CLI -noheader behavior from previous versions. That is, using .mode column in the input renders the CLI -noheader inop when specified. This behavior is different from previous versions and may be related to the 'automatically turns ".header" on if it has not been previously set' in change 6(b) above. My input SQL: .mode column select type, name from sqlite_master limit 2 sqlite3-3.35.3 -noheader test.db < test.sql produces type name ----- ---- table foo table bar whereas 3.29.0 (at least) removes the header as desired. This change has unfavorable impact when accumulating sqlite3 CLI output from multiple invocations without duplicating headers in subsequent calls. Being able to just disable headers with -noheader while allowing the input to use different output formats (e.g. .mode csv, .mode column, etc.) is flexible. --Bradley