Release Notes
- feat:
script sync steps now receive ICP_CLI_ENVIRONMENT, ICP_CLI_NETWORK, ICP_CLI_CID (the current canister's principal), and ICP_CLI_CID_<NAME> (every canister's principal) as environment variables.
- fix:
icp canister call with both --json and -o hex no longer prints both kinds of output at once.
- fix:
icp no longer picks up a stale inherited $PWD when launched as a subprocess via chdir(2) + execve (e.g. from a test harness). The logical $PWD path is now validated against getcwd() by inode before use, preserving symlink-aware project root discovery while ignoring stale values.
Experimental
- feat(sync-plugin): Plugins can now surface messages that persist after the step completes. Anything the plugin writes to stderr (e.g.
eprintln! in Rust) is streamed live in the rolling step view AND printed under the canister name once the step ends; stdout remains transient. The exec() return signature has changed from result<option<string>, string> to result<_, string> — plugins that returned a summary string should eprintln! it instead.
Install icp-cli 0.2.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/dfinity/icp-cli/releases/download/v0.2.7/icp-cli-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/dfinity/icp-cli/releases/download/v0.2.7/icp-cli-installer.ps1 | iex"
Download icp-cli 0.2.7