Heroku CLI v9 production release

Change effective on 16 July 2024

Heroku just released v9.0.0 of the Heroku CLI to production.

As noted in the beta release from last week, version 9.0.0 of the Heroku CLI is mainly an architectural update. With this update, we build all of the core CLI commands on the oclif platform. Previously, many of them used pre-oclif architecture. All the core CLI commands also move into one package, instead of being in many different packages. These changes only apply to the commands included with the core Heroku CLI. It doesn’t include commands installed separately via plugins.

Most commands function the same as before. Here are the breaking changes to be aware of, as well as feature updates.

Breaking Changes

Formatting

The switch to oclif/core means a change to the formatting of some of our output. The main differences are additional new lines and whitespace, table formatting, and output colors. If you parse CLI output at all, you can encounter some errors.

Additional Flags

You can pass additional flags to the triggered operation, such as run commands, or to a config object, like with the addons:create command. The syntax for adding additional flags changes with v9.0.0 of the Heroku CLI. Previously, users added additional flags without any separation of those flags from the Heroku CLI command itself. To pass additional flags, you must add a -- separator between the flags and the CLI command. For example: Before v9.0.0: heroku run bash --norc -a APP_NAME v9.0.0+: heroku run bash -a APP_NAME -- --norc

certs:update Command

  • We removed the --bypass flag as it’s no longer necessary. This command functions as normal, but you can get an error if you include the flag.

pg:settings Commands

  • We changed the order of the required arguments for several of the pg:settings commands. Previously, we expected the value arg to come before the database arg, but we reversed this to resolve a logic issue. Now, you must add the database arg first and the value arg second.

spaces:vpn Commands

  • Previously, these commands accepted the name of the VPN connection as either an argument or the value of the --name flag. With v9.0.0, these commands only accept the VPN connection name as an argument. The --name flag no longer exists.

Removed Commands

  • We removed the outbound-rules commands. We removed the API endpoints for these commands in June
  • We also removed several hidden and previously deprecated commands
    • pg:repoint
    • orgs:default
    • certs:chain
    • certs:key

Feature Updates

  • container commands now print an error when running on stacks that aren’t container stacks.
  • We added notifications for accounts with delinquent payments.