- fix:
icp canister callnow serializes arguments built via the interactive Candid assist prompt against the method's declared signature, matching the behavior of arguments passed on the command line. Previously, narrower values (e.g. a variant case from a multi-case variant) were encoded with a type table inferred only from the value, which the target canister rejected with errors like "Variant index N larger than length 1".
- feat:
icp new --initno longer requires specifying a project name. If non is provided, the containing folder's name is used as the project name - fix:
icp canister call --jsonno longer produces blank output.
- feat:
icp identity delegation request/sign/usenow permit creating and importing identity delegations - feat:
icp identity importnow takes--seed-curve, for seed phrases for non-k256 keys. - fix:
icp canister settings shownow outputs only the canister settings, consistent with the command name - fix: Fail early when attempting to create an identity with an already existing name.
- fix: Find icp.yaml even from within a symlinked folder.
- feat: Add
--proxytoicp canistersubcommands andicp deployto route management canister calls through a proxy canister - feat: Add
--args,--args-file, and--args-formatflags toicp deployto pass install arguments at the command line, overridinginit_argsin the manifest
Important: A network launcher more recent than v12.0.0-83c3f95e8c4ce28e02493df83df5f84a166451c0 is required to use internet identity.
- feat: Many more commands support
--jsonand--quiet. - feat: When a local network is started internet identity is available at id.ai.localhost
- fix: Network would fail to start if a stale descriptor was present
- feat: icp-cli will now inform you if a new version is released. This can be disabled with
icp settings update-check - fix: Duplicate identities no longer cause an error when starting a network
- feat: Added support for creating canisters on cloud engine subnets. Note that local networks cannot yet create these subnets.
- feat: Upgrading canisters now stops them before the upgrade and starts them again afterwards
- feat:
icp canister logssupports filtering by timestamp (--since,--until) and log index (--since-index,--until-index) - feat: Support
log_memory_limitcanister setting inicp canister settings updateandicp canister settings sync - feat: Leaving off the method name parameter in
icp canister callprompts you with an interactive list of methods - fix: Correct templating of special HTML characters in recipes
- feat: Added a notification about new versions of the network
- feat: Added 'friendly name' domains for canisters - instead of
<frontend principal>.localhostyou can accessfrontend.local.localhost. - feat: Added
bindkey to network gateway config to pick your network interface (previous documentation mentioned ahostkey, but it did not do anything) - feat: check for Candid incompatibility when upgrading a canister
- feat: Add
bitcoind-addranddogecoind-addroptions for managed networks to connect to Bitcoin and Dogecoin nodes - feat: Init/call arg files now support raw binary without conversion to hex
- feat!: Remove argument type inference in init/call args in commands and manifest. Args are always assumed Candid, new parameters allow specifying other formats like hex, and alternate parameters are used to specify loading from a file.
- feat: Network gateway now supports a
domainskey - feat:
icp identity exportnow takes an--encryptflag to avoid rendering the key in plaintext - feat: Optionally split connected networks'
urlintoapi-urlandhttp-gateway-url - feat: Allow specifying a version of the network launcher to use
- feat: Support subaccounts and ICRC-1 IDs in
icp token,icp cycles, andicp identity account-id - feat!: Recipes are now specified
@registry/recipe@version, the version component is required. Thelatestversion is no longer assumed and the version tags will be removed soon. - feat: Recipes and prebuilt canisters are now cached locally
- feat:
icp settings autocontainerize true, always use a docker container for all networks - feat:
icp canister migrate-id- initiate canister ID migration across subnets - feat: Install proxy canister when starting managed networks with all identities as controllers (or anonymous + default if more than 10 identities)
icp network statusdisplays the proxy canister principal
- feat:
icp network statusdisplay more information about networks - feat:
icp canister logsto display the current canister logs- use
--followto continuously poll for new logs.--interval <n>to poll everynseconds
- use
- feat: Support
k,m,b,tsuffixes in.yamlfiles when specifying cycles amounts - feat: Support
kb,kib,mb,mib,gb,gibsuffixes in.yamlfiles and CLI arguments when specifying memory amounts - feat: Add an optional root-key argument to canister commands
- feat:
icp canister callnow supports--output <mode>with the following modes:auto(default): Try decoding the response as Candid, then UTF-8, then fall back to hex.candid: Parse as Candid and pretty-print; error if parsing fails.text: Parse as UTF-8 text; error if invalid.hex: Print raw response as hex.
- chore!: new passwords for identity encryption need to be at least 8 characters long
- feat: Anonymous usage telemetry — collects command name, arguments, duration, and outcome
- Enabled by default; opt out with
icp settings telemetry false,DO_NOT_TRACK=1, orICP_TELEMETRY_DISABLED=1 - Automatically disabled in CI environments (
CIenv var set) icp settings telemetryto view or change the current setting
- Enabled by default; opt out with
- feat:
icp canister snapshot- create, delete, restore, list, download, and upload canister snapshots - feat:
icp canister callnow supports--proxyflag to route calls through a proxy canister- Use
--proxy <CANISTER_ID>to forward the call through a proxy canister'sproxymethod - Use
--cycles <AMOUNT>to specify cycles to forward with the proxied call (defaults to 0)
- Use
- feat:
icp identity exportto print the PEM file for the identity
- fix: Fix error when loading network descriptors from v0.1.0-beta.3
- feat:
icp identity deleteandicp identity rename
- fix: More reliably detect occupied ports' project locations across containers and backgrounded networks
- feat: Bind Docker networks to 127.0.0.1
- feat: Add IC options to network manifest (
ii,nns,subnets,artificial-delay-ms) - feat: Release for Windows
- feat: Add safety controls for
--set-controllerand--remove-controller- Warn and prompt for confirmation when removing yourself from controllers
- Add
-f/--forceflag to skip confirmation prompts
- feat: Show
nameincanister statuscommand - feat:
icp canister metadata <canister> <metadata section>now fetches metadata sections from specified canisters - fix: Validate explicit canister paths and throw an error if
canister.yamlis not found - feat!: Rename the implicit "mainnet" network to "ic"
- The corresponding environment "ic" is defined implicitly which can be overwritten by user configuration.
- The
--mainnetand--icflags are removed. Use-n/--network ic,-e/--environment icinstead.
- feat: Allow overriding the implicit
localnetwork and environment. - chore: get rid of
TCYCLESmentions and replace them withcycles - feat: Add
icp cycles transferas replacement foricp token cycles transfer - chore!: remove support for
cyclesinicp token. Useicp cyclesinstead - chore!: Change display format of token and cycles amounts
- feat: Token and cycles amounts now support new formats. Valid examples:
1_000,1k,1.5m,1_234.5b,4T - feat: Allow installing WASMs that are larger than 2MB
- feat: Add
icp identity account-idcommand to display the ICP ledger account identifier- Supports
--of-principalflag to convert a specific principal instead of the current identity
- Supports
- feat:
icp token transfernow accepts AccountIdentifier hex strings for ICP ledger transfers- Legacy ICP ledger transfers using AccountIdentifier are automatically used when a 64-character hex string is provided
- AccountIdentifier format is only supported for the ICP ledger; other tokens require Principal format
- feat:
icp canister callcan now take arguments in hex - feat: allow specifying paths to files that contain canister arguments:
- in
icp canister call <canister> <function> <argument>the argument can now point to a file that contains hex or Candid - in
icp canister install <canister> <argument>the argument can now point to a file that contains hex or Candid - in
icp.yaml, a canister'sinstall_argsfield can now point to a file that contains hex or Candid
- in
- feat: Remove requirement that the user install
icp-cli-network-launcher, auto-install it on first use - feat: Support keyring storage and password-protected encryption for identity keys (and make keyring the default)
- fix: Use EOP when upgrading motoko canisters
- feat: Network startup verbose output now requires
--debugflag - feat: Add
icp network statuscommand to display network information- Displays port, root key, and candid UI principal (if available)
- Supports
--jsonflag for JSON output
- feat:
icp deploynow displays URLs to interact with the deployed canister(s) - feat: Allow overriding the
localnetwork in the config file- This makes it more convenient to configure the default environment
- feat: Validate call argument against candid interface
- The interface is fetched from canister metadata onchain
- feat: Accept an environment as argument for network commands
- feat: call argument building interactively using candid assist
- feat: specifying canister
init_argsinicp.yaml - fix: overriding canister settings from the
canisterssection oficp.yamlwith settings from theenvironmentssection now works as intended
- feat: Add support for launching dockerized local networks (#233)
- fix: When deleting a canister, also delete the id from the id store.
- chore!: rename
icp network runto `icp network start - feat: install Candid UI canister after starting a local network
- feat!: Switch to using icp-cli-network-launcher instead of pocket-ic directly. Download it here.
- feat!: Introduce
newcommand to create projects from templates (#219)
This is a the first beta release of icp-cli.
Supports:
- Creating an identity.
- Launching a local network with pocket-ic.
- Executing operations against a network.
- Building and deploying canisters to a network.