Installing IDA
You can use HCLI to install IDA Pro unattended, non-interactively, or just conveniently. This is great for CI/CD pipelines that rely on IDA Pro, such as testing tools that use idalib.
First, lets check what licenses are associated with our account:
$ hcli license list
Subscription Licenses (2):
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ID ┃ Edition ┃ Type ┃ Status ┃ Expiration ┃ Addons ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 96-0000-0000-01 │ IDA Essential PC │ named │ Active │ 2026-08-25 │ 2 decompiler(s) │
│ 96-0000-0000-01 │ IDA Ultimate │ named │ Active │ 2026-07-02 │ 11 decompiler(s) + TEAMS, LUMINA │
└─────────────────┴──────────────────┴───────┴────────┴────────────┴──────────────────────────────────┘
Now lets download the IDA installer, though we'll see in a subsequent step we can also download it on-demand:
$ hcli download
Fetching available downloads...
Current path: /
? Select an item to navigate or download: 📁 release
Current path: /release
? Select an item to navigate or download: 📁 9.2
Current path: /release/9.2
? Select an item to navigate or download: 📁 ida-pro
Current path: /release/9.2/ida-pro
? Select an item to navigate or download: (Use arrow keys, type to filter)
← Go back
📄 License Server 9.2 (hexlicsrv92_x64linux.run)
» 📄 IDA Pro Mac Apple Silicon 9.2 (ida-pro_92_armmac.app.zip)
📄 Lumina Server 9.2 (lumina92_x64linux.run)
📄 Teams Server 9.2 (hexvault92_x64linux.run)
📄 IDA Pro Windows 9.2 (ida-pro_92_x64win.exe)
📄 IDA Pro Linux 9.2 (ida-pro_92_x64linux.run)
📄 IDA Pro Mac Intel 9.2 (ida-pro_92_x64mac.app.zip)
Getting download URL for: release/9.2/ida-pro/ida-pro_92_armmac.app.zip
Starting download of release/9.2/ida-pro/ida-pro_92_armmac.app.zip...
Using cached file: /Users/user/Library/Caches/hex-rays/hcli/downloads/release/9.2/ida-pro/ida-pro_92_armmac.app.zip
Download complete! File saved to: ida-pro_92_armmac.app.zip
Successfully downloaded 1 file(s)
$ ls -lah *.app.zip
-rw-r--r--@ 1 user staff 539M Sep 12 13:47 ida-pro_92_armmac.app.zip
For a little context, here are the options that the automated installer supports:
$ hcli ida install --help
Usage: hcli ida install [OPTIONS] [INSTALLER]
Installs IDA unattended.
The --download-id option supports tags for simplified version specification:
- 'category:version' (e.g., 'ida-pro:latest') - OS is auto-detected
- 'category:version:os' (e.g., 'ida-pro:9.2:x64linux') - explicit OS
If install_dir is /tmp/myida, the ida binary will be located:
- on Windows: /tmp/myida/ida
- on Linux: /tmp/myida/ida
- on Mac: /tmp/myida/Contents/MacOS/ida
╭─ Options ──────────────────────────────────────────────────────────────────────────╮
│ --create-python-environment After installing IDA, create a │
│ virtual environment for its Python at │
│ $IDAUSR/venv (see `ida python │
│ create-environment`). │
│ --yes -y Auto-accept confirmation prompts │
│ --dry-run Show what would be done without │
│ actually installing │
│ --set-default/--no-set-default Mark this IDA installation as the │
│ default │
│ --accept-eula/--no-accept-eula -a/-A Accept EULA │
│ --install-dir -i TEXT Install dir │
│ --license-id -l TEXT License ID (e.g., 96-0000-0000-01) │
│ --download-id -d TEXT Full installer asset key, or tag │
│ (e.g., 'ida-pro:latest', │
│ 'ida-essential:9.2') │
│ --help Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────╯
Now lets run the automated installer, which doesn't show any dialog or popups - really convenient!
Note:
--set-defaultand--accept-eulaare on by default: the installation becomes the one idalib and the plugin manager use, and the EULA is accepted without prompting. Pass--no-set-defaultor-A/--no-accept-eulato opt out. The example spells both out for clarity, but they are redundant- the installer is cached, so a second run reuses the download. The per-platform cache locations and the
HCLI_CACHE_DIRoverride are listed under Cache & Storage in Environment Variables --create-python-environmentsets up a virtualenv for IDAPython at$IDAUSR/venvand configuresIDAPYTHON_VENV_EXECUTABLE; plugins that need Python packages are installed here (see IDA's Python Environment)- in this example we set
--dry-run, but you should remove this in real-life - HCLI also fetches and installs the associated license key file so everything's ready to go
$ hcli ida install --set-default --create-python-environment --accept-eula --license-id 96-0000-0000-01 ida-pro_92_armmac.app.zip --dry-run
Installation details:
Installer: /Users/user/code/hex-rays/ida-hcli/ida-pro_92_armmac.app.zip
Destination: /Applications/IDA Professional 9.2.app
License: 96-0000-0000-01
Set as default: Yes
Dry run mode - no changes will be made
Would perform the following actions:
1. Extract installer to: /Applications/IDA Professional 9.2.app
2. Install license to: /Applications/IDA Professional 9.2.app/Contents/MacOS
3. Set as hcli default IDA instance
4. Update default IDA path in: /Users/user/.idapro/ida-config.json (only if the installation includes idalib)
5. Accept EULA (only if the installation includes idalib)
Now, if you know exactly which version of IDA you want, you can download and install it in a single command.
Note the use of --download-id release/9.2/ida-pro/ida-pro_92_armmac.app.zip, the path is derived from the hcli download output above.
$ hcli ida install --set-default --create-python-environment --license-id 96-0000-0000-01 --download-id release/9.2/ida-pro/ida-pro_92_armmac.app.zip --dry-run
Getting download URL for: release/9.2/ida-pro/ida-pro_92_armmac.app.zip
Starting download of release/9.2/ida-pro/ida-pro_92_armmac.app.zip...
Using cached file: /Users/user/Library/Caches/hex-rays/hcli/downloads/release/9.2/ida-pro/ida-pro_92_armmac.app.zip
Download complete! File saved to:
/var/folders/55/f4jb4y1d6b74cdrp_gp45hlw0000gn/T/ida-pro_92_armmac.app.zip
Successfully downloaded 1 file(s)
Installation details:
Installer:
/var/folders/55/f4jb4y1d6b74cdrp_gp45hlw0000gn/T/ida-pro_92_armmac.app.zip
Destination: /Applications/IDA Professional 9.2.app
License: 96-0000-0000-01
Set as default: Yes
Dry run mode - no changes will be made
Would perform the following actions:
1. Extract installer to: /Applications/IDA Professional 9.2.app
2. Install license to: /Applications/IDA Professional 9.2.app/Contents/MacOS
3. Set as hcli default IDA instance
4. Update default IDA path in: /Users/user/.idapro/ida-config.json (only if the installation includes idalib)
5. Accept EULA (only if the installation includes idalib)
--download-id also accepts a tag instead of a full asset key, so you do not have to look the key up. A tag is category:version, which resolves the OS automatically, or category:version:os to pin it:
hcli ida install --license-id 96-0000-0000-01 --download-id ida-pro:9.2 --dry-run
hcli ida install --license-id 96-0000-0000-01 --download-id ida-pro:latest:x64linux --dry-run