Escape hatch
Every flow, mode, and dialog needs an obvious way out that costs the user nothing. The clearly marked exit.
See it
What it is
An escape hatch is the clearly marked exit from a flow, a mode, or a dialog: Cancel, Close, Esc, Skip, Back, 'not now'. Nielsen calls it user control and freedom and describes it as an emergency exit, because people wander into things by accident and need to leave without negotiating.
Anywhere you take over the screen, you owe one. Modals need Esc plus a visible close. Onboarding needs Skip. Multi-step wizards need Back that keeps what was already typed. Permission and paywall prompts need a dismiss that is not a 5 point grey x in the corner. Full screen and focus modes need an exit that survives the user forgetting which key they pressed to get in.
Gotcha: an exit that silently throws away work is worse than no exit, so pair it with an unsaved-changes guard or an undo. Also note the other sense of the phrase, common in engineering: an escape hatch is the API that lets you drop to the raw layer (inline styles, raw SQL, dangerouslySetInnerHTML) when the abstraction runs out. Same idea, different room.
Ask AI for it
Add a proper escape hatch to this flow. Give the modal a visible close button of at least 44px, close on Esc, close on backdrop click, and return focus to the element that opened it. Add a persistent 'Skip for now' on every onboarding step and a Back control that preserves already-entered values. If the user has unsaved changes, confirm before discarding instead of blocking the exit.