I was curious about the use case of setting OPT_COORDINATES: BOTH. Does this mean that it tries to work in internal to be faster but if it encounters an error, e.g. I used to see a torsion angle issue in older versions, it switches to cartesian to finish the calculation or does it have a different behaviour?
Yes ^. "opt_coordinates": "both" uses a full set of (3N-5/6) or more internal coordinates and 3N Cartesian coordinates. The combination has been found useful by some for molecules with many floppy modes. Currently, setting 'dynamic_level': 1 will allow for switching from internals to cartesians automatically during an optimization. As a disclaimer this will also allow step_type and trust region options to be changed, during the optimization, differently than in the default RFO algorithm.