AutoHotkey v2.0.22: What Matters Most for Your Scripts

AutoHotkey v2.0.22 just dropped, and while the changelog reads like a typical patch release, several of these fixes address long-standing pain points that affect everyday scripting. Here’s what you should actually care about.
Check out some of the upgrades in this video
🔧 AutoHotkey 2.0.22 FINALLY Fixes These Annoying Bugs! (You’ll Love This)

The Error Dialog Finally Works Properly
If you’ve ever tried to debug a script that handles emoji, Chinese, Arabic, or other non-Latin text, you’ve probably encountered the old error dialog mangling your output — or worse, hanging entirely when accessibility tools like screen readers or UI Automation inspectors try to read it.
The culprit was riched20.dll, which has now been swapped for msftedit.dll. This is a quiet fix with outsized impact. If you develop on a system with accessibility tools running, or your scripts process internationalized text, error dialogs will no longer freeze your workflow. You’ll actually be able to read your error messages.
Modifier Key Hotkeys Got a Major Overhaul
This is the big one for hotkey-heavy scripters. Multiple interrelated bugs around modifier keys have been fixed:
- Neutral Ctrl/Alt/Shift hotkeys no longer eat keystrokes. If you’ve ever defined a hotkey like
~Ctrl::and noticed that other key combinations stopped working correctly, that’s been fixed. The hotkey would suppress the underlying key event even when it shouldn’t have. - CapsLock as a prefix key works correctly now. Remapping CapsLock is one of the most common things people do with AutoHotkey. If you use CapsLock as a prefix (e.g.,
CapsLock & jfor navigation), it no longer gets suppressed incorrectly, and its state no longer reverts unexpectedly when you press another prefix key before releasing it. - Left/Right modifier key-up with
~now passes through. If you use~(pass-through) on left/right modifier key-up hotkeys, they actually pass through now. Previously they could get swallowed.
If you’ve ever struggled with modifier-based hotkeys behaving inconsistently — keys not firing, modifiers getting stuck, CapsLock toggling when it shouldn’t — update and see if your workarounds are no longer necessary.
Breaking Change: </> Prefix Side Effects Removed
This one could bite you. The < and > prefixes (for targeting left or right modifier keys specifically) had an undocumented side effect: they influenced whether the corresponding modifier key would fire on release. Some scripts may have unknowingly relied on this behavior.
If you use left/right-specific modifier hotkeys and notice changed behavior after updating, this is why. The fix is intentional — it makes the behavior consistent with documentation — but you may need to adjust scripts that depended on the quirk. The release notes point to A_PriorKey and key-up hotkey variants as the proper alternatives.
Silent Error Swallowing in __Delete Fixed
This one is subtle but important for anyone writing object-oriented AHK. If an error occurred inside a __Delete destructor while a Try/Catch block was active elsewhere in the call stack, the error was silently suppressed. You’d never know your cleanup code was failing.
Now those errors surface properly. If you have classes with __Delete methods, this update might reveal bugs that have been hiding in your code — which is a good thing.
Data Loss on Exit: Cached Writes Now Flush
If your script writes to files and then exits quickly, cached writes could be lost. The fix improves flushing on process exit. This is the kind of bug that causes intermittent, hard-to-reproduce data loss — your script usually works, but occasionally the last write doesn’t persist. If you’ve seen that pattern, this may have been the cause.
Should You Update?
Yes. The modifier key fixes alone make this worth it for most users, and the error dialog fix removes a genuine workflow blocker for international users and anyone using accessibility tools. The only caution is the </> prefix behavior change — test your modifier hotkeys after updating.
The full release notes are on GitHub.

