# AutoHotkey changelog > A scripting language for desktop automation on Windows. - Vendor: AutoHotkey Foundation - Category: Productivity - Official site: https://www.autohotkey.com - Tracked by: What's New (https://whatsnew.fyi/product/autohotkey) - Harvested from: GitHub (AutoHotkey/AutoHotkey) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v2.0.26 - Date: 2026-05-04 - Version: v2.0.26 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.26 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.26 - **fixed** — Fixed ControlGetItems/ControlGetChoice not throwing for Tab controls - **fixed** — Fixed error reporting for ComObjArray().__Enum() if it ever fails - **fixed** — Fixed TraySetIcon("HBITMAP:" handle) without *

Fixed ControlGetItems/ControlGetChoice not throwing for Tab controls.

Fixed error reporting for ComObjArray().__Enum(), if it ever fails.

Fixed TraySetIcon("HBITMAP:" handle) without *.

SHA256 hash 2BF1B89B1047136490FC321D2FDC988B42DD86F693EEA7872746AC6ADF722BC3 AutoHotkey_2.0.26_setup.exe 43522AA3122A57784AC5DB30ABF85C2244475C36ACD7796E2C993355F9E926AE AutoHotkey_2.0.26.zip
### v2.0.25 - Date: 2026-05-04 - Version: v2.0.25 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.25 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.25 - **fixed** — ByRef alias to global var becoming unset in recursive calls - **fixed** — Error raised by Hotkey() not transferring control correctly

Fixed ByRef alias to global var becoming unset in recursive calls.

Fixed error raised by Hotkey() not transferring control correctly.

SHA256 hash 4098093C65C6128912FE484727B62D77085097D6178FD9C3AD9A97AE3138636C AutoHotkey_2.0.25_setup.exe 44035E19CB8B1B642E0AF294B1E53556BF51453BB3AED0A8700C2EF509D0D340 AutoHotkey_2.0.25.zip
### v2.0.24 - Date: 2026-04-21 - Version: v2.0.24 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.24 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.24 - **fixed** — Navigation with Tab key in a Gui with a nested Gui (+Parent) - **added** — Optional check for AutoHotkey updates, disabled by default - **fixed** — Errors being raised when arrow keys are used in the Help Files menu - **fixed** — Install-version.ahk to delete the temporary ".staging" directory after installing an upgrade - **fixed** — Help Files menu to be displayed at the button, not at the mouse cursor - **changed** — "New script" to add the file to recent files Fixed navigation with Tab key in a Gui with a nested Gui (+Parent). **UX/Dash** Added an [optional check for AutoHotkey updates](http://autohotkey.com/docs/v2/Program.htm#update), disabled by default. [based on AutoHotkey/AutoHotkeyUX#11 by kczx3] Fixed errors being raised when arrow keys are used in the Help Files menu. [AutoHotkey/AutoHotkeyUX#24 by iPhilip] Fixed install-version.ahk to delete the temporary ".staging" directory after installing an upgrade. Fixed Help Files menu to be displayed at the button, not at the mouse cursor. Changed "New script" to add the file to recent files.
SHA256 hash A945F745506CF93E41C1FCA2006D1F2FE39E07355F37CA357F90F74CCA8A61D4 AutoHotkey_2.0.24_setup.exe 3E0713009B5D9155AC2CB255BDB9E9352F556A7DCA15F822F6C67E904CB86D35 AutoHotkey_2.0.24.zip
### v2.0.23 - Date: 2026-04-05 - Version: v2.0.23 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.23 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.23 - **changed** — Key-down events with SendLevel between 1 and 7 now only correlate with key-up events of the same level, fixing suppression and modifier interference issues - **fixed** — WinExist("A",,"B") to not exclude windows which have no controls - **fixed** — Custom combo hotkeys with neutral modifiers such as Alt & Esc - **fixed** — Key-up hotkeys to fire consistently when the key is used as both a prefix and a suffix - **fixed** — Timers interrupting MsgBox after the timeout starts but before the window is shown

Changed how key-up events are correlated to key-down events for the purpose of determining whether to suppress key-up. A key-down with SendLevel between 1 and 7 now only correlates with a key-up of the same level. When #InputLevel 1 is in effect, this fixes Right::Send "{Right}" not suppressing key-up, RShift::RAlt interfering with RAlt::RShift and vice versa. Events with SendLevel 8 and above are still grouped with non-sent events for practical reasons.

Fixed WinExist("A",,,"B") to not exclude windows which have no controls.

Fixed custom combo hotkeys with neutral modifiers (e.g. Alt & Esc::) [broken by v2.0.22].

Fixed key-up hotkeys to fire consistently when the key is used as both a prefix and a suffix (e.g. a & b::, b & a:: and a up::).

Fixed timers interrupting MsgBox after the timeout starts but before the window is shown, such as if SetTimer(MsgBox, -10) is used immediately before MsgBox(1,,"T1").

SHA256 hash D7038E9BA08E9C63EDCDB2E63552B434B87491B449D7082CF28A40CD4ECE91AF AutoHotkey_2.0.23_setup.exe 775CF3233A3C176F14222DF22BADA5AB94B34C4A5DFD55A124AE469E7ED8F6DB AutoHotkey_2.0.23.zip
### v2.0.22 - Date: 2026-03-21 - Version: v2.0.22 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.22 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.22 - **removed** — Remove the undocumented effect that a hotkey with the <> prefix had on the corresponding modifier key, so that prefixed modifier hotkeys like <^a:: always fire on press instead of on release - **changed** — Change error dialogs to use msftedit.dll instead of riched20.dll to fix hanging when inspected by UI Automation and broken characters with certain character sets like emoji, Chinese, or Arabic - **fixed** — Fix errors within __Delete being suppressed if a Try/Catch is active - **fixed** — Fix CallbackCreate to validate ParamCount - **fixed** — Fix detection of DllCall(... "str",&var:={} ...) as an error - **fixed** — Fix CapsLock:: to suppress even if CapsLock is used as a prefix key - **fixed** — Fix neutral Ctrl/Alt/Shift hotkeys to not suppress the key, which was broken by v2.0.20 - **fixed** — Fix fire-on-release behaviour of neutral Ctrl/Alt/Shift hotkeys when a key-up variant is turned on but disabled by #HotIf - **fixed** — Fix CapsLock & 1:: to revert CapsLock state even if another prefix key is pressed before CapsLock is released - **fixed** — Fix L/R modifier key-up not being suppressed in some cases where key-down was suppressed - **fixed** — Fix L/R modifier key-up to be passed through if ~ is used even if key-down was suppressed - **fixed** — Fix L/R modifier hotkeys to fire on press even if the corresponding neutral modifier is present, such as LCtrl:: with Ctrl:: - **fixed** — Fix corruption of unquoted continuation sections with trailing spaces - **fixed** — Fix file stream I/O to flush cached writes if the file has not been closed when the process exits - **fixed** — Fix `; in continuation sections with the ` (literal escape) and C (comment) options

Removed the undocumented effect that a hotkey with the </> prefix had on the corresponding modifier key; e.g. <^a:: causing LCtrl:: to fire on release, inconsistent with the documentation. Always firing on press provides greater consistency and flexibility. The modifier key itself was suppressed since v2.0.20. Neutral modifiers such as Ctrl:: always fire on release, and similar behaviour can be implemented with A_PriorKey and ~LCtrl up::.

Changed error dialogs to use msftedit.dll instead of riched20.dll to fix the following issues:

Fixed errors within __Delete being suppressed if a Try/Catch is active.

Fixed CallbackCreate to validate ParamCount.

Fixed detection of DllCall(... "str",&var:={} ...) as an error.

Fixed CapsLock:: to suppress even if CapsLock is used as a prefix key.

Fixed neutral Ctrl/Alt/Shift hotkeys to not suppress the key [broken by v2.0.20].

Fixed fire-on-release behaviour of neutral Ctrl/Alt/Shift hotkeys when a key-up variant is turned on but disabled by #HotIf.

Fixed CapsLock & 1:: to revert CapsLock state even if another prefix key is pressed before CapsLock is released.

Fixed L/R modifier key-up not being suppressed in some cases where key-down was suppressed.

Fixed L/R modifier key-up to be passed through if ~ is used even if key-down was suppressed.

Fixed L/R modifier hotkeys to fire on press even if the corresponding neutral modifier is present; e.g. LCtrl:: with Ctrl::.

Fixed corruption of unquoted continuation sections with trailing spaces.

Fixed file stream I/O to flush cached writes if the file hasn't been closed when the process exits.

Fixed `; in contination sections with the ` (literal escape) and C (comment) options.

Cleaned up some code within the keyboard/mouse hook.

SHA256 hash 5613E65158AB8A8A90D5986B18894080AF367DC36347B366EE3AEB0DBCD6DB86 AutoHotkey_2.0.22_setup.exe 9CD93E5793404D8C2585B73F15BE244872CC4DECCF5FA8B6F1F7B2A549FBBFD4 AutoHotkey_2.0.22.zip
### v2.0.21 - Date: 2026-02-09 - Version: v2.0.21 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.21 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.21 - **fixed** — StrGet crashing when given an address and not a length

Fixed StrGet crashing when given an address and not a length. (Broken by v2.0.20)

SHA256 hash CA4247B757AB19DBF7A4BA5CFAB69B0EBCA60FB4F46E73389E5B9EA9A1CD7C7B AutoHotkey_2.0.21_setup.exe 7386F45BE928F0825FFBE78811187636D72EFCBD264E2FD406E7E045D681A626 AutoHotkey_2.0.21.zip
### v2.0.20 - Date: 2026-02-08 - Version: v2.0.20 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.20 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.20 - **fixed** — Potential undefined behaviour in message callbacks during script termination - **fixed** — Run not closing the process handle - **fixed** — GuiFromHwnd crashing if passed another script's GUI window HWND - **fixed** — Leading space in For( a in b ) incorrectly raising an error - **fixed** — Enumerator calls (For) treating implicitly returned "" as true - **fixed** — A_maxHotkeysPerInterval and A_Hotkeyinterval returning incorrect values if spelled in lower case - **fixed** — FileSelect duplicating the filter pattern if it lacks *. - **fixed** — ListBox tab-stop spacing when T option is used during control creation - **fixed** — ~RAlt & <:: causing RAlt:: to fire on release despite ~ (and likewise with other L/R modifier keys) - **fixed** — Remap with nonexistent source key causing silent exit - **fixed** — Key-up hotkey causing unwanted passthrough when modifiers don't match - **fixed** — Semicolon in /* ; */ preventing the block comment from ending - **fixed** — IsOptional and IsByRef return values for built-in methods - **fixed** — RegWrite parameter 1 to be mandatory - **fixed** — String return value being corrupted during debugging - **fixed** — Erroneous Else placement to raise an error, not crash on load - **fixed** — StrPut/StrGet handling of 32-bit integer limits on x64 - **fixed** — Operations not requiring conversion no longer limit string length - **fixed** — Conversion now throws more consistently if the API's limit is exceeded - **fixed** — 1:: not firing after 1 & LButton up:: is used, and similar

Fixed potential undefined behaviour in message callbacks during script termination.

Fixed Run not closing the process handle.

Fixed GuiFromHwnd crashing if passed another script's GUI window HWND.

Fixed leading space in For( a in b ) incorrectly raising an error.

Fixed enumerator calls (For) treating implicitly returned "" as true.

Fixed A_maxHotkeysPerInterval and A_Hotkeyinterval returning incorrect values if spelled in lower case.

Fixed FileSelect duplicating the filter pattern if it lacks *..

Fixed ListBox tab-stop spacing when T option is used during control creation. [PR #346]

Fixed ~RAlt & <:: causing RAlt:: to fire on release despite ~ (and likewise with other L/R modifier keys).

Fixed remap with nonexistent source key causing silent exit.

Fixed key-up hotkey causing unwanted passthrough when modifiers don't match. e.g. RButton release not being suppressed after activating RButton:: if ^RButton up:: was also present.

Fixed semicolon in /* ; */ preventing the block comment from ending.

Fixed IsOptional and IsByRef return values for built-in methods.

Fixed RegWrite parameter 1 to be mandatory.

Fixed string return value being corrupted during debugging.

Fixed erroneous Else placement to raise an error, not crash on load.

Fixed StrPut/StrGet handling of 32-bit integer limits on x64.

Fixed 1:: to not fire after 1 & LButton up:: is used, and similar.

Fixed crash when ListView has the Sort option and Add is called with Col1 omitted.

Fixed static functions not using static variables of grandparent functions.

Fixed unpaired key-up hotkey not suppressing the key if it is also used as a prefix but the custom combos are disabled or have the tilde modifier.

SHA256 hash 7F70BAC4DBA20AA55C12E59A7BBDEC748601AF864D47C3EE892635216B76F89E AutoHotkey_2.0.20_setup.exe DC0F28EB8B0CDDAD6F1B5C891FDB5261EA376BB8C4FD4D593C015FD89B01B8AA AutoHotkey_2.0.20.zip
### v2.0.19 - Date: 2025-01-25 - Version: v2.0.19 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.19 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.19

Fixed memory out-of-bounds access during RegEx compilation.

Fixed externally-released modifiers to not be "restored" post-Send.

Fixed modal dialog boxes suppressing InputHook events.

Fixed key-up erroneously being suppressed after key-repeat presses it down in some cases.

Fixed Critical Error when loading large icons with no alpha channel.

Fixed MouseGetPos to make Control blank and not throw if ClassNN cannot be determined.

Fixed FileSelect to validate Options.

Fixed unexpected Catch/Else/Finally/Until not being flagged as an error in some cases.

Fixed Try/Catch/Else/Finally not executing Finally if Else returns.

Fixed execution of if-else-if-else-if containing fat arrow functions.

SHA256 hash FD55129CBD356F49D2151E0A8B9662D90D2DBBB9579CC2410FDE38DF94787A3A AutoHotkey_2.0.19_setup.exe 4E0D0E65655066A646A210951320FEAEF0729A3597177131ADAEC4066BEF5869 AutoHotkey_2.0.19.zip
### v2.0.18 - Date: 2024-07-06 - Version: v2.0.18 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.18 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.18

Fixed A_Clipboard silently exiting when GetClipboardData returns NULL.

Fixed a.b[c] := d to invoke the getter for a.b if there is no setter.

SHA256 hash A30AF310F45D4076CF1580BB08015DB9A1337DDC1A99CF61829E645B196E8B2E AutoHotkey_2.0.18_setup.exe BF3A27398397B886A3D8B0AD2591C29A7165D1F560B1943A8BC120497B6EA5F8 AutoHotkey_2.0.18.zip
### v2.0.17 - Date: 2024-06-05 - Version: v2.0.17 - Original notes: https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.17 - Permalink: https://whatsnew.fyi/product/autohotkey/releases/v2.0.17

Implemented an optimization to the WinText parameter by Descolada. [PR #335]

Changed UnsetError message to suggest a global declaration instead of appending "(same name as a global)" after the variable name.

Changed VarUnset warning message for consistency with UnsetError.

Fixed the increment/decrement operators to throw UnsetError if the var is unset, not TypeError.

Fixed OwnProps to assign the property name safely in cases where a property deletes itself.

Fixed breakpoints to work in arrow functions under a control flow statement without a block.

Fixed debugger to break at the line of the call when stepping out of a function. (This behaviour was added in Revision 31 and broken by v1.1.30.00.)

Stepping out of a function which was called as a new thread now breaks at the line which was interrupted, instead of waiting until the next line is reached.

Fixed debugger to not delete temporary breakpoints which are ignored while evaluating DBGp property_get or context_get.

SHA256 hash 69B21D5A3D2BCC2B2B075D275A38F551997C45F28C9504995EDE406AA101BEAD AutoHotkey_2.0.17_setup.exe 2E980BD99ADD2B0859B0BD6586DDDCD688E1F8588EF6C9BF5922674E947A6DC6 AutoHotkey_2.0.17.zip