Skip to content

0.46.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 19:02
· 50 commits to main since this release
f15d092

Added

  • zm config unset <key> removes a setting, or any part of the file that doctor reports a problem in, by the key its fix names. zm config show, set and unset run on a file with problems: show prints each problem after the settings that still load, and set and unset leave the rest of the file as written.
  • A run says what was typed and, when it failed, what went wrong (cli-core 0.425.0). zm runs list and zm runs show gain cli_command (zm config show), argv with every value that may be content or a secret written [redacted], agent when a coding agent ran it, and error: its class, code, masked message and a short stack.
  • zm skill status says, for Claude Code and for Codex and Gemini CLI, whether the installed SKILL.md matches this version, and zm skill show --for claude|agents prints the copy installed there (cli-base 0.56.0).

Changed — may break callers

  • If you last signed in with zm 0.34 or earlier, sign in again: run zm <profile> session start. zm no longer moves a login saved under the Public Client ID alone to a profile; zm finds no login for that profile until you do.
  • zm doctor --json lists every problem in the config file as config.issues, in place of config.error (cli-core 0.423.0). Each issue is { kind, file, profile?, key?, line?, column?, what, fix? }, with kind one of invalid_json, unknown_setting, unknown_permission or invalid_value. what says what a value has to be and never shows the saved value; fix is a zm config unset command that runs exactly as written, left out for invalid JSON, where line and column say where reading stopped. Doctor exits 0 with no top-level error on a file with problems, and still fills profiles and authentication from what loads. config.readable and config.source are gone; config.found says whether the file exists.
  • Old setting names are no longer read. account_profile, the camelCase keys (clientId, filesFolder, filesTimezone, accountProfile) and the zoom.clientId selector are unknown like any other key, with no hint about what they became.
  • A saved permission key that names no command stops every command except config and doctor, with the config unset that removes it. This includes recordings.sync.
  • Every command except config and doctor refuses a file with problems by its first problem, how to remove it and how many more doctor lists. client_id, source and files_folder may be left out of the file; zm config set writes only the setting it changes.
  • The hidden zm serve command is gone; zm <profile> mcp is the MCP server.
  • A --dry-run preview says effects.service_contacted: false and no longer has effects.messenger_contacted, and its permission.key is zm's own key for the command, as help's availability already was: a preview of watch names watch, not messages (cli-core 0.426.0).
  • zm config set saves config.json owner-only (0600) instead of 0644 (cli-base 0.57.0). Anything that reads the file as another user can no longer read it after the next save.
  • A broken part of a setting is reported as the whole setting. A bad entry in context_sources is one invalid_value issue on context.sources with the fix zm config unset context.sources, and the rest of the file still loads. An invalid_json issue always has its line and column (cli-core 0.425.0).

Security

  • zm doctor reports a config.json or config folder other users can read. files.problems in its answer lists each as { path, mode, want, fix } (0600 for the file, 0700 for the folder), and stderr prints to make it private: chmod 600 '<path>' for each; nothing is changed on disk. Windows is not checked.

Fixed

  • zm doctor answers when the config path is a folder or cannot be read, with one invalid_value issue for the whole file and no fix, instead of failing. Other commands refuse such a file with the same words.
  • Help shows config, doctor, models and runs without a profile, since they read none: Usage: zm doctor [options] and zm doctor --json, not zm <profile> doctor and zm personal doctor --json. A profile word before them still works.
  • The MCP read and write tools say "names, titles, what people wrote" in place of "names, titles, messages", and their example command is runs list, which runs as it is, in place of the group runs. zm --help says drive is "searchable with your other WireCat data".
  • MCP no longer offers a command group that only prints its help, such as config or meetings; their commands are still offered one by one.