I created a custom connector. It had no query parameters. I created a new flow and used my custom connector in a step. It worked.
I later added a query parameter (with a visibility of "internal"). I tested the connector in the connector designer. It worked.
I ran my flow again, and the step failed.
To fix this, I had to create a new flow that used my custom connector, export both flows, and then definition.json for both. I found that the new flow had my query parameters copied into it, and the old flow did not. I corrected this in the JSON, imported, and now my flow works.
It seems that no check is being done to see if a connector has been updated or is missing a required value (though, in this case, a default value is already provided on the connector, and it should have been used and probably shouldn't also have to be defined on the flow).