Repository navigation
Releases: espressif/esptool
Release list
Version 5.6.0
v5.6.0 (2026-10-15)
✨ New Features
- stub_flasher: Update flasher stub to v1.4.1 (Peter Dragun - 0ffcfea)
- espefuse: Adds ADC weight eFuse fields for ESP32-S31 (Konstantin Kondrashov - 62fdad2)
🐛 Bug Fixes
- espefuse: Replace the bitstring dependency with a minimal local module (Roland Dobai - 402ec4b)
- espefuse: Update ESP32-H21 eFuse definitions for ECO3 (Konstantin Kondrashov - bcfd059)
- espefuse: Update ESP32-H4 eFuse definitions to V0.5 (Konstantin Kondrashov - 4f53ac6)
- esp32h2: Identify chip variant and embedded flash (Konstantin Kondrashov - a6a4ea0)
- Declare the license as an SPDX expression (Peter Dragun - ea9a60d)
Thanks to all contributors!
Version 5.5.0
v5.5.0 (2026-10-08)
✨ New Features
- stub_flasher: Update flasher stub to v1.4.0 (Jaroslav Burian - 3fa0a3c)
- ESP32-H21: Add support for flasher stub (Vojtech Piroch - 7f5da4d)
- cli: Accept 64m and 32m flash frequencies (Jaroslav Burian - bf85060)
- espefuse: Add eFuse calibration data for ESP32-S31 (Konstantin Kondrashov - cbabcc6)
🐛 Bug Fixes
- load-ram: Warn when the image is incompatible with the chip (Jaroslav Burian - 8041d2b)
- write-flash: Only reject incompatible bootloader images (Jaroslav Burian - d2c6246)
- usb-otg: Limit block size to 0x800 for uploading stub without VID/PID (Peter Dragun - e781a1c)
- xmc: Print boot-up fix success only when the re-check passes (Jaroslav Burian - 04783ea)
- ESP32-C5: Identify chip variant and embedded flash/PSRAM in chip description (Jan Beran - 679f8be)
- ESP32-C5: Enable baud rate change in Secure Download Mode (Jaroslav Burian - 470f0b3)
- ESP32-H4: Correct target definitions (Jaroslav Burian - 5a3b860)
- ESP32-H21: Correct target definitions (Vojtech Piroch - 605c7fd)
- ESP32-S31: Fix addresses for disabling watchdogs when using USB-Serial/JTAG (Peter Dragun - 3c4c026)
- espsecure: Report missing EC_PARAMS attribute of HSM ECDSA key (Jaroslav Burian - 184699a)
- espsecure: Select HSM ECDSA parameters from key curve (Shubham-Padkonde - 30ff22a)
- espefuse: Warn when ESP32-P4 Secure Download Mode leaves flash unwritable (Jaroslav Burian - b4b4c58)
- Reject custom --spi-connection pins on unsupported chips (Jaroslav Burian - 88d0213)
- Mimic how ROM computes crystal freq when stub enabled in ESP32 (Jan Beran - 6fcb061)
📖 Documentation
- SDM: Show baud rate change limitation only for ESP32-C2 (Jaroslav Burian - ef38b3e)
- test: License fixtures under CC0 and document their origin (Jakub Kocka - b08d06b)
- contributing: Rewrite the contributions guide and add AGENTS.md (Roland Dobai - b6d1bb4)
- Generate flash frequency encodings from target classes (Jaroslav Burian - 8aefcac)
- Expose USB and reset capabilities from target classes (Peter Dragun - d1f8230)
- Derive bootloader offset and flash frequency from target classes (Peter Dragun - b669113)
- Remove boot pins values and fix IDF links (Vojtech Piroch - 2d7c29b)
🔧 Code Refactoring
- targets: Add FLASH_32BIT_ADDR_SUPPORTED target capability (Jaroslav Burian - 589c349)
- espefuse: Generalize calibration eFuse naming (Konstantin Kondrashov - 9d52132)
Thanks to all contributors!
Version 5.4.0
✨ New Features
- stub_flasher: Update flasher stub to v1.2.2 (Jaroslav Burian - 4b64d42)
- esptool: Add Secure Debug Controller commands (Aditya Patwardhan - 92842ee)
- espsecure: Add support for Secure Debug Controller commands (Aditya Patwardhan - ba57b82)
- espefuse: Adds eFuse token dump (Konstantin Kondrashov - a634b47)
- Extract connect_esp function to cmds (Nebojša Cvetković - 9a6c5cb)
- Migrate esp_rfc2217_server to use esp-pylib and rich_click (Peter Dragun - 8ec37d3)
- Migrate esptool to use esp-pylib (Peter Dragun - bd052d6)
🐛 Bug Fixes
- espefuse: Correct eFuse error and date register offsets (Roland Dobai - 464304e)
- esp32-c61: Identify in-package flash and PSRAM variants (Roland Dobai - bed2388)
- espefuse: Close the summary file after writing the JSON output (Peter Dragun - 9f5d8b0)
- espefuse: Remove adc_tp class for irrelevant fields (Konstantin Kondrashov - e7f3ca8)
- Unlocked cryptography bounds for Intel Mac (Jakub Kocka - c4fc382)
- Budget stub erase work in compressed flash timeouts (Jaroslav Burian - 1040eea)
- Raise default erase_region_timeout_per_mb to 40s (Jaroslav Burian - b1594ce)
- satisfy mypy after adding esp-pylib to pre-commit (Peter Dragun - c4eb420)
📖 Documentation
- troubleshooting: Make Secure Boot limitations only visible for ESP32-C3 (Peter Dragun - 18cd4c7)
- contributing.rst: Add section about reusing shared code (esp-pylib) (Peter Dragun - 82d7d7a)
- Add ESP32-S31 target to documentation (Peter Dragun - 9a35108)
- Fix missing ESP32-C61 in chip list for 32MB+ flash access (Peter Dragun - cd5c428)
- Fix supported flash sizes for esp32p4, esp32c5, esp32c61 and esp32h4 (Peter Dragun - 863c2b5)
- Add documentation for color output and CLI help themes (Peter Dragun - 0315a10)
Thanks to @nebkat, and others for contributing to this release!
Results of checking the release against common anti-virus SW
- esptool-v5.4.0-linux-aarch64.tar.gz
- esptool-v5.4.0-linux-amd64.tar.gz
- esptool-v5.4.0-linux-armv7.tar.gz
- esptool-v5.4.0-macos-amd64.tar.gz
- esptool-v5.4.0-macos-arm64.tar.gz
- esptool-v5.4.0-windows-amd64.zip
The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.
Version 4.12.0
v4.12.0 (2026-07-13)
✨ New Features
- ESP32-P4: Support ECO7 (rev3.2) (Radim Karniš - 80a98cf)
- spi_flash: Add flash reset when detecting chip (C.S.M - cb2e3d7)
- stub_flasher: Adopt new flasher stub (Radim Karniš - 2db40c8)
- espefuse: Add raw_value to JSON summary output (Peter Dragun - 7f01960)
🐛 Bug Fixes
- ESP32-H4: Make flash could run at 64MHz since 2nd stage bootloader (Song Ruo Jing - 3b895c2)
- stub_flasher: Print an explanatory error if the stub flasher files are missing (Radim Karniš - 3cf5db7)
- Resolve symlinked paths in get_usb_vid_pid (igor.udot - 80684fd)
- Use FLASH_BEGIN flag to flash encrypted data instead of separate command (Jaroslav Burian - 634a87a)
- espefuse: Add WAFER_VERSION_HI eFuse for esp32p4 revisions less than v3.0 (harshal.patil - 705e18a)
- espefuse: Remove the value description of the eFuse for ESP32-C5 (Peter Dragun - 0353102)
- Security eFuse layout for C2/C5/C61 (Radim Karniš - 0dadfd1)
Results of checking the release against common anti-virus SW
- esptool-v4.12.0-windows-amd64.zip
- esptool-v4.12.0-macos-arm64.tar.gz
- esptool-v4.12.0-macos-amd64.tar.gz
- esptool-v4.12.0-linux-armv7.tar.gz
- esptool-v4.12.0-linux-amd64.tar.gz
- esptool-v4.12.0-linux-aarch64.tar.gz
The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.
Version 5.3.1
🐛 Bug Fixes
- Fix operations over USB-Serial/JTAG transport in Secure Download Mode (Radim Karniš - 6c9ad54)
- Preserve VID/PID lookup for symlinked ports (Jaroslav Burian - aea67cd)
- Raise FatalError instead of leaking StopIteration (Roland Dobai - 2b5bc8b)
- espefuse: Remove non-existent HMAC key purposes for ESP32-C61 (harshal.patil - ec4fc2a)
- PyInstaller: Bundle pyserial URL handlers (Lucas Saavedra Vaz - 1044f3c)
📖 Documentation
- stub flasher: Document usage of
esp-flasher-stuband announce legacy stub deprecation (Radim Karniš - ff37ef7)
Version 5.3.0
✨ New Features
- ESP32-P4: Support ECO7 (rev3.2) (Radim Karniš - 27463b2)
- ESP32-S31: Add stub flasher support (Radim Karniš - 6e14f2e)
- flasher stub: Use esp-flasher-stub as the default flasher stub
- ESP32-C61: Add large flash support (Jaroslav Burian - 29aef6a)
- esptool: Adds efuse version and pkg efuses for ESP32H4 (Konstantin Kondrashov - bc55336)
- write-flash: Fully reflash all data when fast reflash verification fails (Radim Karniš - 1c16a59)
- write-flash: Log which file is being flashed when multiple files are given (Radim Karniš - dc457d1)
- reset: Support USB-UART adapters with hardware flow control (Jeija - 9ea2c5c)
- Add support for plugin system for optionally loading stub features (Roland Dobai - e6697e4)
- Disallow erasing key recovery info flash sectors when flash encryption using KM is enabled (harshal.patil - f55cf25)
- Add transport mode detection based on USB VID:PID instead of hard-coded ROM symbols (Vojtech Piroch - 0a5fe5c)
- Improve flash chip connection verification with SFDP register check (Jan Beran - 3821d83)
- espefuse: Update ESP32-H21 eFuse table (Konstantin Kondrashov - 93ef664)
- espefuse: Update ESP32-S31 eFuses table (Konstantin Kondrashov - ffbd13f)
- espefuse: Update ESP32-H4 eFuse table (Konstantin Kondrashov - c6ef00c)
- espefuse: Add ESP32-C5 calibration eFuse fields (Konstantin Kondrashov - 66c472b)
- espefuse: Add
--afteroption to reset the chip after the operation is finished (Peter Dragun - 1b8436f)
🐛 Bug Fixes
- flasher stub: Fix
C900error during compressed upload (Radim Karniš - 73308b8) - flasher stub: Fix writing to non-4-byte aligned offsets in flash (Radim Karniš - 73308b8)
- elf2image: Correct pad length for ram-only-header flash segments (Sylvio Alves - c637749)
- esptool: Use the correct address for reading eFuses in ESP32-S31 (Konstantin Kondrashov - 9376b9d)
- esptool: Fix incorrect eFuse bit mask for
SPI_BOOT_CRYPT_CNT_MASK(harshal.patil - 2a2b86d) - logger: Declare singleton instance as ClassVar for mypy (Radim Karniš - 48e4450)
- transport: Enable USB transport modes detection in Secure Download Mode (Radim Karniš - 3714d1b)
- ESP32-H4: Fix flash running at 64MHz since 2nd stage bootloader (Song Ruo Jing - 974d975)
- ESP32: Decode
VDD_SDIOeFuse voltage like espefuse summary (Radim Karniš - 825ad97) - ESP32-S31: Fix configurable MMU page size support (armando - 2806d84)
- ESP32-P4: Fix ECO7 early guru meditation errors during boot up (Radim Karniš - 3f6cb59)
- ESP32-S31: Fix flash manipulation commands (Radim Karniš - 1d51f72)
- ESP32-C61: Warn if encryption during download is disabled (Radim Karniš - 86c4f71)
- Fix security eFuse layouts for ESP32-C2, ESP32-C5, and ESP32-S31 (Mahavir Jain - 97c20ec)
- espefuse: Add checks for eFuse names in read and write protect commands (Peter Dragun - 118fbdb)
- espefuse: Remove the value description of the eFuse for ESP32-C5 (Peter Dragun - f6722ad)
🔧 Code Refactoring
- espefuse: Move MAC field logic to base_fields.py (Peter Dragun - a3dc123)
- espefuse: Move common code of EspEfuses to base class (Peter Dragun - 5e903ce)
- espefuse: Create EfuseKeyPurposeFieldBase and unite implementations (Peter Dragun - 889a3ff)
- espefuse: Move common fields to base_fields.py (Peter Dragun - 4a2bed1)
- espefuse: Add type hints and fix formatting (Peter Dragun - cfafe84)
- Add missing ABCs to base classes (Peter Dragun - 47a43b3)
Thanks to @Jeija and others for contributing to this release!
Results of checking the release against common anti-virus SW
- esptool-v5.3.0-windows-amd64.zip
- esptool-v5.3.0-macos-arm64.tar.gz
- esptool-v5.3.0-macos-amd64.tar.gz
- esptool-v5.3.0-linux-armv7.tar.gz
- esptool-v5.3.0-linux-amd64.tar.gz
- esptool-v5.3.0-linux-aarch64.tar.gz
Any failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.
Note: The macOS binary archives were re-uploaded on Jun 3, 2026 after fixing notarization. Earlier downloads may crash due to incorrect notarization. Please re-download the macOS build from this release.
Version 5.2.0
✨ New Features
- write-flash: Add fast reflashing option to update changed flash sectors only or skip already flashed content (documentation) (Radim Karniš - 5aad298)
- stub flasher: Make the esp-flasher-stub stub flasher available to use (Radim Karniš - cf9cdb7)
- esptool: Add ESP32-E22 support (Radim Karniš - ce838cd)
- esptool: Add ESP32-S31 support (C.S.M - 3077627)
- esptool: Update chip description for ESP32-C2/ESP8684H (Konstantin Kondrashov - c6f1839)
- python: Support Python v3.14 (Radim Karniš - 8d201c7)
- write-flash: Enable compress and encryption together (Jaroslav Safka - 5d747d8)
- write-flash: Allow encrypted writes using key from the Key Manager (harshal.patil - aa1b04a)
- write-flash: Apply compression only if it reduces the file size (Jaroslav Safka - 188028d)
- SPI flash: Add SPI flash reset when detecting chip (C.S.M - 1b57c61)
- espefuse: Add eFuse definitions for ESP32-H2 revision 1.2 (Konstantin Kondrashov - 08f4cbb)
- espefuse: Add ESP32-E22 support (Radim Karniš - a47e86f)
- espefuse: Enable ECDSA keys burning support for ESP32-H4 (nilesh.kale - a02d858)
- espefuse: Set postpone flag by default (Konstantin Kondrashov - 23e5ec1)
- espefuse: Add eFuse flash fields for ESP32-C2/ESP8684H (Konstantin Kondrashov - b3d4e15)
- espsecure: Add --skip-padding flag to sign-data and verify-signature API (hrushikesh.bhosale - ce5a4ac)
- ESP32-H4: Add stub flasher support (Radim Karniš - cf9cdb7)
- ESP32-C5: Add ECO3 stub flasher support (Radim Karniš - fc0c984)
- ESP32-P4: Add ECO6 stub flasher support (Radim Karniš - 9393921)
- ESP32-P4: Power on SPI flash chip during the connection process on ECO6 (Radim Karniš - 21c802f)
- HSM signing: Use primitive HSM signing mechanisms (harshal.patil - a1a4e95)
- CLI: Add autocomplete for port and baud rate (Peter Dragun - 8363cae)
- port detection: Improve ports sorting when autodetection is used (Jaroslav Burian - ec84fba)
🐛 Bug Fixes
- change_baud: Disable changing baud rate on ESP32-C2 and ESP32-C5 in Secure Download Mode (Radim Karniš - 9286189)
- USB mode detection: Fix USB mode detection on ESP32-C5 and ESP32-C61 (Radim Karniš - 81bdb76)
- ESP32-H4: Fix memory map and disable unsupported watchdog reset (Radim Karniš - 7728772)
- ESP32-C6: Fix ESP32-C6FH8 package detection (Roland Dobai - d7f1adf)
- ESP32-C3: Fix USB->Serial detection on rev1.1 (Jaroslav Safka - 8bc2c50)
- logging: Require custom logger to implement the correct interface (Radim Karniš - deca775)
- logging: Fix warning log for ESP32-S31 (Roland Dobai - 5920030)
- logging: Remove warning keyword from error outputs (Roland Dobai - 30808a4)
- logging: Always flush output in stage mode (Peter Dragun - a5c9090)
- write-flash: Print correct number of bytes and flash offsets when --no-stub (Radim Karniš - e78ab87)
- write-flash: Allow --force and --erase-all to be used together (Radim Karniš - c26e58e)
- write-flash: Fix ESP32-C2 FE key validation (Konstantin Kondrashov - c02d53f)
- write-flash: Fix ESP32 FE key validation (Konstantin Kondrashov - 4f1d212)
- write-flash: Allow bootloader reflash in secure-boot-v2 scheme (Mahavir Jain - 9d0bdd5)
- erase-region: Allow erasing past 4MB in ROM and SDM mode (Radim Karniš - 06794d7)
- image cmds: Print the name of chip in full expanded form (Radim Karniš - 6b6e0f4)
- espefuse: Ensure port is closed when creating commands fails (Peter Dragun - 9646a80)
- espefuse: Fix decoding error in ESP32-C5 summary (Peter Dragun - e49c69a)
- espefuse: Fix calibration eFuses for ESP32-P4 ECO5 (Konstantin Kondrashov - a1ca6c9)
- espefuse: Fix ECDSA key purposes for ESP32-P4 (Konstantin Kondrashov - ae23ab2)
- espsecure: Fix the keyfile arg of the sign-data command by making it optional (harshal.patil - ee35dda)
- espsecure: Allow verifying multiple appended ECDSA signatures (harshal.patil - 9a207b1)
- windows: Limit rich_click version to <1.9.0 (Peter Dragun - fa97591)
Results of checking the release against common anti-virus SW
- esptool-v5.2.0-windows-amd64.zip
- esptool-v5.2.0-macos-arm64.tar.gz
- esptool-v5.2.0-macos-amd64.tar.gz
- esptool-v5.2.0-linux-armv7.tar.gz
- esptool-v5.2.0-linux-amd64.tar.gz
- esptool-v5.2.0-linux-aarch64.tar.gz
The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.
Version 4.11.0
✨ New Features
- ESP32-P4: Add ECO6 support (Radim Karniš - 1fe1d8f)
- ESP32-P4: Power on SPI flash chip during the connection process on ECO6 (Radim Karniš - b8dd0a3)
- ESP32-C5: Add ECO3 support (Radim Karniš - 1fe1d8f)
- ESP32-C5: Add chip features (Peter Dragun - 9d91efc)
🐛 Bug Fixes
- change_baud: Disable changing baud rate on ESP32-C2 and ESP32-C5 in Secure Download Mode (Radim Karniš - 0e3adae)
- USB mode detection: Fix USB mode detection on ESP32-C5 and ESP32-C61 (Radim Karniš - 667861b)
- ESP32-C3: Fix USB->Serial detection on rev1.1 (Jaroslav Safka - 3660ff6)
- ESP32-C6: Fix ESP32-C6FH8 package detection (Roland Dobai - 70733c1)
- image-info: Sanitize app and bootloader info of null bytes (Radim Karniš - 8fccdf8)
- espefuse: Fix decoding error in ESP32-C5 summary (Peter Dragun - b3134ed)
- espefuse: Fix calibration eFuses for ESP32-P4 ECO5 (Konstantin Kondrashov - ab8ecae)
- espefuse: Fix ECDSA key purposes for ESP32-P4 (Konstantin Kondrashov - c75a3de)
- espsecure: Allow verifying multiple appended ECDSA signatures (Harshal Patil - 2856164)
Results of checking the release against common anti-virus SW
- esptool-v4.11.0-windows-amd64.zip
- esptool-v4.11.0-macos-arm64.tar.gz
- esptool-v4.11.0-macos-amd64.tar.gz
- esptool-v4.11.0-linux-armv7.tar.gz
- esptool-v4.11.0-linux-amd64.tar.gz
- esptool-v4.11.0-linux-aarch64.tar.gz
The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.
Version 4.10.0
New Features
- ESP32-P4: Add ECO5 support (Jaroslav Safka - 2ea1fca, Konstantin Kondrashov - a2f4e66)
- ESP32-C5: Add support for >16 MB flash sizes (Roland Dobai - 0ac477a)
- espefuse: Add custom key purposes for ESP32-C6/C5/P4 (Konstantin Kondrashov - 3996e21)
- espefuse: Support burning ECDSA_384 keys (Konstantin Kondrashov - cc61acf)
- espefuse: Clean up limitation for BLOCK9 usage (Konstantin Kondrashov - dc220df)
- espefuse: Add support for burning 512-bit keys on ESP32-C5 (Konstantin Kondrashov - 599634a)
Bug Fixes
- Use correct error codes for ROM errors (Jaroslav Burian - 529ff4e)
- espefuse: Fix re-connection issue in check-error via USB-Serial/JTAG (Konstantin Kondrashov - af6ff30)
- write_flash: Make write flash memory-layout-independent (Jaroslav Safka - aee68fa)
- elf2image: Handle ELF files with zero program header counts (Tormod Volden - 2e87882)
- espefuse: Disable programming and usage of XTS-AES-256 eFuse key for ESP32-C5 (harshal.patil - 13121d4)
- ESP32-C5: Erase during flashing above 16MB (Jaroslav Burian - a977cdf)
- espsecure: Add support for
python-pkcs119.0+ (Peter Dragun - 223456f)
Results of checking the release against common anti-virus SW
- esptool-v4.10.0-windows-amd64.zip
- esptool-v4.10.0-macos-arm64.tar.gz
- esptool-v4.10.0-macos-amd64.tar.gz
- esptool-v4.10.0-linux-armv7.tar.gz
- esptool-v4.10.0-linux-amd64.tar.gz
- esptool-v4.10.0-linux-aarch64.tar.gz
The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.
Version 5.1.0
✨ New Features
- ESP32-P4: Add ECO5 support (Jaroslav Safka - 6c10050, Konstantin Kondrashov - 40f103c)
- ESP32-C5: Add support for >16 MB flash sizes (Roland Dobai - 8e2b94e)
- espefuse: Add custom key purposes for ESP32-C6/C5/P4 (Konstantin Kondrashov - c6ce0bc)
- espefuse: Support burning ECDSA_384 keys (Konstantin Kondrashov - 4a9a3d8)
- espefuse: Clean up limitation for BLOCK9 usage (Konstantin Kondrashov - d63e3db)
- espefuse: Add support for burning 512-bit keys on ESP32-C5 (Konstantin Kondrashov - 468de5c)
🐛 Bug Fixes
- Use correct error codes for ROM errors (Jaroslav Burian - da4346b)
- ESP32-C5: Erase during flashing above 16MB (Jaroslav Burian - d65a24e)
- write_flash: Make write flash memory-layout-independent (Jaroslav Safka - d19413c)
- elf2image: Handle ELF files with zero program header counts (Tormod Volden - d27ce37)
- elf2image: Fix
--pad-to-sizeargument parsing (Peter Dragun - 66a1377) - CLI: Handle deprecated options with "=" before value (Peter Dragun - f05fb62)
- Prevent exiting immediately when being called programmatically (Fu Hanxi - d8ae230)
- espefuse: Update CLI to support
rich-click1.9.0 (Peter Dragun - 2ae5535) - espefuse: Fix re-connection issue in check-error via USB-Serial/JTAG (Konstantin Kondrashov - a160468)
- espefuse: Disable programming and usage of XTS-AES-256 eFuse key for ESP32-C5 (harshal.patil - c85a93d)
- espsecure: Fix printing key digest in signature info (Radim Karniš - 7e53596)
- espsecure: Extract public key version 1 in RAW format (Peter Dragun - 6cfced8)
- espsecure: Allow signing multiple files in one go (Peter Dragun - 0177d61)
- espsecure: Add support for
python-pkcs119.0+ (Peter Dragun - 3ea646f)
Thanks to @tormodvolden, and others for contributing to this release!
Results of checking the release against common anti-virus SW
- esptool-v5.1.0-windows-amd64.zip
- esptool-v5.1.0-macos-arm64.tar.gz
- esptool-v5.1.0-macos-amd64.tar.gz
- esptool-v5.1.0-linux-armv7.tar.gz
- esptool-v5.1.0-linux-amd64.tar.gz
- esptool-v5.1.0-linux-aarch64.tar.gz
The failures are probably false positives. You can mark esptool as safe in your anti-virus SW, or install esptool from source.