Table Of Contents
Evolvable and smart clients
Especially if your CLI acts as a thin API client, you could leverage evolvable API design patterns, like Hypermedia API or GraphQL, to make your CLI application evolve together with the API.
On a similar note, introducing a plugin or extension architecture, that can fetch plugins dynamically, could help with the evolution of your application.
Nudging users to upgrade
As listed above, rolling out a mature auto-update mechanism is a complex journey. If your aim is to only keep as many users as possible on the latest version, consider simpler solutions first. For example, you could add a message to the CLI output, that would nudge users to upgrade to the latest version.
Or, if your CLI is calling your web API, with a well-formed User-Agent, you can detect users running outdated versions, and user you web application or email messaging to let them know they should upgrade.