Quick Start
First Steps
- Install HCLI (see Installation)
- Authenticate (see Authentication)
- Verify your setup:
hcli whoami You are logged in as user@example.com using an API key from HCLI_API_KEY environment variable
Command Overview (abbreviated)
Here are the core operations supported by HCLI:
$ hcli
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ download Download IDA binaries, SDKs, and utilities. │
│ ida Manage IDA installations. │
│ license Manage IDA licenses. │
│ plugin Manage IDA Pro plugins. │
│ share Share files with Hex-Rays. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
All Available Commands
$ hcli commands
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Command ┃ Description ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ hcli auth default │ Set or show the default credentials. │
│ hcli auth key create │ Create a new API key. │
│ hcli auth key install │ Install an API key as a new credentials. │
│ hcli auth key list │ List all API keys. │
│ hcli auth key revoke │ Revoke an API key. │
│ hcli auth list │ List all credentials. │
│ hcli auth switch │ Switch the default credentials. │
│ hcli commands │ List all available command combinations. │
│ hcli download │ Download IDA binaries, SDKs, and utilities. │
│ hcli extension create │ Create an hcli extension │
│ hcli extension list │ List hcli extensions │
│ hcli ida install │ Installs IDA unattended. │
│ hcli ida set-default │ Set or show the default IDA installation directory. │
│ hcli license get │ Download license files with optional filtering. │
│ hcli license install │ Install a license file to an IDA Pro installation directory. │
│ hcli license list │ List available licenses with rich formatting. │
│ hcli login │ Log in to the Hex-Rays portal and create new credentials. │
│ hcli logout │ Log out and remove stored credentials. │
│ hcli plugin config del │ Delete a plugin configuration setting. │
│ hcli plugin config export │ Export plugin configuration settings as JSON. │
│ hcli plugin config get │ Get a plugin configuration setting. │
│ hcli plugin config import │ Import plugin configuration settings from JSON. │
│ hcli plugin config list │ List all configuration settings for a plugin. │
│ hcli plugin config set │ Set a plugin configuration setting. │
│ hcli plugin install │ No description available │
│ hcli plugin lint │ Lint an IDA plugin directory, archive (.zip file), or HTTPS URL. │
│ hcli plugin repo snapshot │ Create a snapshot of the repository. │
│ hcli plugin search │ No description available │
│ hcli plugin status │ No description available │
│ hcli plugin uninstall │ No description available │
│ hcli plugin upgrade │ No description available │
│ hcli share delete │ Delete shared file by code. │
│ hcli share get │ Download a shared file using its shortcode. │
│ hcli share list │ List and manage your shared files. │
│ hcli share put │ Upload a shared file. │
│ hcli update │ Check for hcli updates. │
│ hcli whoami │ Display the currently logged-in user. │
└───────────────────────────┴──────────────────────────────────────────────────────────────────┘
Examples
Install IDA
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/.hcli/cache/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.
╭─ Options ──────────────────────────────────────────────────────────────────────────╮
│ --yes -y Auto-accept confirmation prompts │
│ --dry-run Show what would be done without actually installing │
│ --set-default Mark this IDA installation as the default │
│ --accept-eula -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 Installer slug │
│ --help Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────╯
Now lets run the automated installer, which doesn't show any dialog or popups - really convenient!
Note:
- we're setting this as the "default" IDA installation, so this is what idalib and the plugin manager will use
- 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 --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. Update default IDA path in: /Users/user/.idapro/ida-config.json
4. Accept EULA
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 --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/.hcli/cache/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. Update default IDA path in: /Users/user/.idapro/ida-config.json
4. Accept EULA
Share a file with Hex-Rays Support
You can use HCLI to upload files into a shared space available to Hex-Rays Support. This is really useful when you've found a bug in IDA Pro and want to help the engineers reproduce it.
There are three visibilities:
- private: Just for me
- domain: Anyone from my domain (@example.com)
- authenticated: Anyone authenticated with the link
$ hcli share list
No shared files found.
$ hcli share put /tmp/1/a49e9ff8d53a9af8ef20a383a276449d.exe_.i64
? Pick a visibility 🔎 [authenticated] Anyone authenticated with the link
Upload Complete 100% 434.6/434.6 kB 2.1 MB/s 0:00:00
✓ File uploaded successfully!
Share Code: efja98
Share URL: https://my.hex-rays.com/share/efja98
Download URL: https://api.eu.hex-rays.com/api/assets/s/efja98
$ hcli share list
» ○ a49e9ff8d53a9af8ef20a383a276449d.exe_.i64 (efja98) - 424.4 KB
At this point, you can share the short code (efja98) with support@hex-rays.com and they can access the file:
$ hcli share get efja98
Downloading a49e9ff8d53a9af8ef20a383a276449d.exe_.i64 100%
✓ File downloaded successfully!
File: a49e9ff8d53a9af8ef20a383a276449d.exe_.i64
Size: 424.4 KB
Saved to: a49e9ff8d53a9af8ef20a383a276449d.exe_.i64
$ hcli share delete efja98
File to delete:
Name: a49e9ff8d53a9af8ef20a383a276449d.exe_.i64
Code: efja98
Size: 424.4 KB
Delete file a49e9ff8d53a9af8ef20a383a276449d.exe_.i64 ? [y/n]: y
✓ Deleted: efja98
Find and Install an IDA Pro plugin
❯ hcli plugin
Usage: hcli plugin [OPTIONS] COMMAND [ARGS]...
Manage IDA Pro plugins.
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────╮
│ config Manage plugin configuration settings. │
│ install │
│ lint Lint an IDA plugin directory, archive (.zip file), or HTTPS URL. │
│ search │
│ status │
│ uninstall │
│ upgrade │
╰────────────────────────────────────────────────────────────────────────────────────────────────────╯
$ hcli plugin search
current platform: macos-aarch64
current version: 9.2
bindiff 8.0.0 installed
binexport 12.0.0 installed
bookmark-hints 0.1.3
capa (incompatible) 9.2.1
colorize-calls 0.1.3
comida (incompatible) 2025.9.24
deREferencing 2025.9.24 installed
extensible-hints 0.1.3
hint-calls 0.1.3 upgradable from 0.1.2
ida-cyberchef 0.1.0 installed
ida-settings-editor 1.0.2 upgradable from 1.0.1
ida-terminal-plugin 0.0.6
IFL 1.5.2 installed
ipyida 2.3
oplog 0.1.3 installed
tag-func 0.1.3
xray 2025.9.24
zydisinfo 1.1 upgradable from 1.0
$ hcli plugin search ipython
ipyida 2.3 installed
If two repository plugins share the same bare name, HCLI will ask you to qualify the reference with the plugin's repository URL, for example hcli plugin install ida-chat@https://github.com/HexRaysSA/ida-chat-plugin or hcli plugin install ida-chat==1.0.0@https://github.com/HexRaysSA/ida-chat-plugin. See Plugin Manager for details.
$ hcli plugin install ipyida
Installed plugin: ipyida==2.3
$ hcli plugin status
ida-settings-editor 1.0.1 upgradable to 1.0.2
zydisinfo 1.0 upgradable to 1.1
plugin1 5.0.0 not found in repository
oplog 0.1.3
ida_vmray_presence 0.1.0 not found in repository
HashDB 1.10.0 not found in repository
DelphiHelper 1.21 not found in repository
ipyida 2.3
bindiff 8.0.0
ida-cyberchef 0.1.0
deREferencing 2025.9.24
binexport 12.0.0
xrefer 2025.10.14 not found in repository
IFL 1.5.2
hint-calls 0.1.2 upgradable to 0.1.3
(incompatible) yarka 0.7.0 found at: $IDAPLUGINS/yarka/
(legacy) foo.py found at: $IDAPLUGINS/foo.py
Incompatible plugins don't work with this version of hcli.
They might be broken or outdated. Try using `hcli plugin lint /path/to/plugin`.
Legacy plugins are old, single-file plugins.
They aren't managed by hcli. Try finding an updated version in the plugin repository.
Next Steps
- License Management - Managing your IDA licenses
- File Sharing - Share and collaborate on files