jq 1.6 parses all JSON numbers into IEEE 754 double precision floats. Integers above 2 to the 53rd power cannot be represented exactly, so a 19-digit identifier such as a Twitter or Discord snowflake, or a database bigint, comes out of 'jq .' with its last digits changed. Nothing warns you, and the output is still valid JSON.
jq 1.7, released in December 2023 after a five-year gap, preserves the original literal text of a number that passes through unmodified, so a filter that merely selects or reprints a large integer now round-trips it exactly. Any arithmetic on the value still converts to a double and still loses precision.
The robust approach for identifiers is to keep them as strings end to end. If the producer emits them as numbers, convert at the boundary with 'tostring' before any comparison, and be aware that on jq 1.6 the damage is already done by the time your filter runs. Check which version is present with 'jq --version'; many long-lived distribution images still ship 1.6.