Changelog

What changed in mcc

Notable changes, newest first. The source of truth is CHANGELOG.md in the repository; the format follows Keep a Changelog and versions follow Semantic Versioning.

Unreleased

main

Nothing yet beyond 0.5.0. Follow commits on main for work in progress.

0.5.0

2026-10-21

mcc usage --all looks up every account's usage live for one run, the default profile included, with no config change and a risk notice each time. What it finds is saved to the mcc statusline cache, so plain mcc usage, mcc list and mcc run show those numbers afterwards, with their age. Release v0.5.0.

Added

  • mcc usage --all looks every account's usage up live for one run, the default profile included, with each profile's own login instead of the mcc statusline cache, without turning on [usage] live = true. Because it sends each profile's OAuth access token to Anthropic's undocumented usage endpoint, it prints a risk notice on stderr every time it runs, also shown in mcc usage --help; use it only with accounts you own. What it finds is saved to the same cache mcc statusline writes, so a later mcc usage without --all, mcc list and mcc run show it with its age until a window resets or newer numbers are cached; an account it can't read keeps what was cached. Without --all, mcc usage behaves as before. #94

0.4.0

2026-10-21

Each project can now have its own profile, which mcc run starts, and usage now comes from what mcc statusline caches as you use Claude Code instead of from your logins. mcc sync keeps the changes you make inside a profile, profiles can share the default's plugins and link its skills, mcc doctor checks every profile's setup, and the install script downloads a prebuilt binary, so you no longer need Rust. Release v0.4.0.

Added

  • Per-project profiles. mcc project set PROFILE makes PROFILE the one mcc run starts in the current git repository (or directory). mcc never switches accounts on its own: when that profile is at its 5-hour or weekly limit, mcc run asks first, with waiting as the default, and offers other profiles only when the project allows them (--allow). mcc list shows each project's profile. #28, #31
  • mcc env [PROFILE] prints the shell line that points CLAUDE_CONFIG_DIR at the project's profile, so plain claude, IDE extensions and scripts use it too: eval "$(mcc env)", also in a direnv .envrc. mcc exec PROFILE -- CMD... runs any command as a profile, and mcc exec --all -- CMD... runs it once per profile. #42, #43
  • Opt-in mcc statusline install: Claude Code's status line saves each profile's 5-hour and weekly rate limits as you use it, so mcc can show usage without reading your logins. --prefix also puts the active profile's name in the status line, and mcc statusline uninstall puts the previous one back. #33
  • Shared plugins and link mode. mcc link ALIAS plugins makes a profile use the default profile's plugins instead of its own copy, and mcc link ALIAS skills,agents (also commands, output-styles and claude-md) links those items to the default's. Editing a linked item, or installing or removing a plugin in a sharing profile, changes it for the default too. --off gives the profile its own copy again. #46, #47
  • Per-profile settings overlays: [profiles.ALIAS.settings] in ~/.mcc/config.toml, or settings.mcc.json in the profile, keeps a profile's own model, permissions or other settings across syncs. #45
  • mcc doctor [PROFILE] checks every profile's setup and prints the fix for each problem; it only reads, and exits 1 when it finds one. mcc config get|set|edit|path changes mcc's settings instead of editing its file by hand, and refuses an invalid value. #44, #48
  • Labels and colors. mcc add asks for an optional label (--label), and --color gives the profile a color; both show in mcc list, mcc run and the status line, and mcc config set profiles.ALIAS.label or profiles.ALIAS.color changes them. mcc on its own prints a quick status of every profile, and an opt-in launch banner (mcc config set launch.banner true, then mcc refresh-launchers) shows the profile and its usage as it starts. #39, #54, #55, #59
  • Session-sharing groups. mcc share ALIAS --group NAME shares sessions only with the profiles of group NAME, and joining a group with a profile of another organization is refused unless you pass --allow-cross-org. mcc add records the account each profile signs in to and warns when another profile already uses it. Upgrade note: profiles that already share keep sharing as the default group, with nothing moved; if mcc warns that a group mixes organizations, move a profile to a group of its own with mcc share ALIAS --off, then mcc share ALIAS --group NAME. #39, #40
  • mcc add --email ADDRESS and --sso are passed to claude auth login, and mcc add warns when a profile signs in with an Anthropic Console account, which Claude Code doesn't keep separate per profile. #58
  • --json-v2 on mcc list, mcc usage and mcc project list prints versioned JSON, {"schema": 2, ...}, around the same objects; --json is unchanged. #49
  • Prebuilt binaries. Each release ships mcc for macOS and Linux on x86_64 and arm64, and the install script downloads the one for your platform, checks its SHA-256 checksum and installs it into ~/.local/bin, so you no longer need Rust. Upgrade note: earlier versions of the script installed into ~/.cargo/bin; if it warns that an old mcc there comes first on your PATH, remove it with cargo uninstall mcc. #53, #89

Changed

  • mcc sync is three-way: it keeps the changes you make inside a profile, reports a path changed on both sides as a conflict instead of overwriting it (--force overwrites it), and backs up everything it replaces. mcc diff ALIAS shows what differs, and mcc list has a SYNC column. Upgrade note: the first sync of a profile made before this release still replaces what differs from the default, after backing it up and listing each path; preview it with mcc sync ALIAS --dry-run. #41, #87
  • mcc list, mcc usage and mcc run read usage from the mcc statusline cache and no longer read any login by default. They show how old the numbers are, and — for a profile with nothing current cached. Upgrade note: run mcc statusline install so mcc can show each profile's usage (profiles pick it up on their next mcc sync); looking usage up with each profile's login is now opt-in, with mcc config set usage.live true. #34
  • mcc list hides account emails by default, like mcc usage, and account is null in --json. Upgrade note: pass --show-email, or run mcc config set privacy.show_email true, to see them. #57
  • The mcc list table fits 120 columns: NAME, ACCOUNT, 5H, WEEK, LAST USED and SYNC. Counts, sizes and other details moved to mcc list --long; JSON is unchanged. #56
  • mcc add --clone shares the default profile's plugins instead of copying them; --copy-plugins gives the profile its own copy, as before. Upgrade note: start such a profile with its own command, mcc run, mcc exec or mcc env: plain CLAUDE_CONFIG_DIR=… claude sees no plugins. Existing profiles keep their copy until mcc link ALIAS plugins, which moves it to the profile's .mcc-backup/ folder; delete that backup to free the space. #47
  • The session-sharing note is printed in full only the first time sharing is turned on for a profile, and mcc's terms-of-service notes mention Anthropic's updated Usage Policy that takes effect November 12, 2026. #36, #38
  • link, project, run, env, exec, statusline and doctor are reserved and can't be used as aliases. #28, #33, #42, #43, #44, #46

Fixed

  • Comments you write in ~/.mcc/config.toml are kept when mcc saves it, and two mcc commands running at once no longer lose each other's changes. #35
  • ~/.mcc/logs/mcc.log no longer grows without limit: at about 1 MB it is moved to mcc.log.1, so at most about 2 MB of log is kept. #51
  • mcc sync backs up every file or folder it overwrites or removes, such as CLAUDE.md, skills and agents, not only the settings files. #30
  • mcc add no longer warns about a duplicate account when the same login is used in another organization, such as a personal plan and a work seat, since those have usage limits of their own. #40
  • The live usage lookup finds a profile's macOS Keychain login when USER is unset, as under launchd, cron or some IDE tasks. #37
  • A link entry in ~/.mcc/config.toml that can't be linked, such as a hand-written link = ["settings"], no longer makes mcc sync, mcc diff and mcc list skip that item; it is ignored with a warning. #86
  • The address given to mcc add --email no longer appears in mcc.log. #88

Security

  • The install script downloads release files over HTTPS only, redirects included, and builds from a local clone only when it runs as that clone's install.sh. Piped to sh, earlier versions took the current directory for a clone and built and installed it whenever its Cargo.toml had name = "mcc". #53

0.3.0

2026-10-13

Profiles can now opt in to session sharing with mcc share ALIAS or ALIAS --mcc-share, so --resume lists the sessions of every sharing profile, and mcc refresh-launchers updates launchers and shell aliases made by an older mcc. Release v0.3.0.

Added

  • Opt-in session sharing between profiles, off by default. mcc share ALIAS (or starting a profile with ALIAS --mcc-share) links the profile's projects/ to ~/.mcc/shared/projects, so --resume lists the sessions of every sharing profile. mcc share ALIAS --off gives the profile its own copy again. The setting is share_sessions under [profiles.ALIAS] in ~/.mcc/config.toml. Only sessions are shared: never credentials, the account, history or live session state. Every time sharing is turned on, mcc prints a note about Anthropic's Consumer Terms and Usage Policy. mcc list marks sharing profiles, and --json has share_sessions and launcher_current. #25, #26
  • mcc refresh-launchers [ALIAS...] rewrites launchers and shell aliases from the current templates. #25, #26

Changed

  • New launchers handle --mcc-share, and new shell aliases run the launcher instead of calling claude directly. CLAUDE_CONFIG_DIR is unchanged, so logins are kept. Upgrade note: existing launchers and aliases are not modified; run mcc refresh-launchers once to use ALIAS --mcc-share with profiles created before this release. #25, #26
  • mcc list prints a hint to run mcc refresh-launchers while a launcher predates session sharing. #25, #26
  • share and refresh-launchers are reserved and can't be used as aliases. #25, #26

0.2.0

2026-10-13

mcc usage is now a compact table that hides account emails by default, and mcc rename renames a profile and its command while keeping its login. Release v0.2.0.

Added

  • mcc rename ALIAS NEW (alias mv): renames a profile and its command. It installs the new launcher and alias block, renames the registry entry, then removes the old launcher and alias. The new name is checked like an alias in mcc add, and a failure rolls the changes back. The profile directory, and so its login, is kept. #24, #23
  • [usage] show_email in ~/.mcc/config.toml, plus --show-email / --hide-email on mcc usage, to choose whether account emails are shown. #24, #23

Changed

  • mcc usage shows a compact table, one row per profile, instead of a block per profile: PROFILE, then the bar and percent used, time until reset and reset time for the 5-hour and weekly windows. On narrow terminals the reset time goes first, then bars shrink 10 → 5 → 0. #24, #23
  • mcc usage hides account emails by default, in the table and in --json (account is null). Use --show-email or [usage] show_email = true to show them. #24, #23
  • mcc add <old name> names the renamed profile that still uses that name's directory, instead of only saying that the directory exists. #24, #23

Fixed

  • mcc delete <old name> refuses to delete a directory that a renamed profile still uses. #24, #23

0.1.0

First version 2026-10-10

The first version of mcc. Release v0.1.0.

Added

  • Homebrew formula for macOS and Linux: brew install luongnv89/tap/mcc builds mcc from source and installs bash, zsh and fish completions. brew upgrade mcc and brew uninstall mcc work as usual. The formula lives in packaging/homebrew/mcc.rb. #14
  • mcc usage [PROFILE] [--json]: every profile's 5-hour and weekly usage in detail, with a bar, percent used and left, time until reset, and the reset time in local time. default or claude selects ~/.claude; an unknown name exits 2. #16, #20
  • Usage meters in mcc list: a coloured bar (green, yellow at 80%+, red at 95%+) and colour-independent ! / !! markers, sized to the terminal width. #17, #20
  • 5-hour and weekly usage in mcc list: new 5H and WEEK columns, lines in --long cards, and a usage object in --json, for every profile including the default. Each profile's own login is used; failures show unavailable with a reason and never change the exit status. #13, #15
  • --no-usage and MCC_NO_USAGE to skip the usage fetch, and the MCC_USAGE_URL / MCC_SECURITY_BIN test overrides. #15
  • mcc completions for bash, zsh, fish, elvish and PowerShell, plus install.sh. #12
  • mcc list (table, --long cards, --json), mcc sync (plan, backup, apply; --dry-run, --prune, --only, --all) and mcc delete (type-to-confirm or --yes, logout, removes only what mcc created). #12
  • mcc init (OS, terminal, shell, rc file and claude detection, run automatically on first use) and mcc add (alias validation, clone with path rewriting, launcher, managed rc block, login, rollback on failure). #12
  • Apache-2.0 license, contributing guide, code of conduct, security policy, and issue and pull request templates. #18, #19

Fixed

  • mcc usage keeps the full 20-cell bar at 80 columns: it drops the absolute reset time before shrinking the bar, and shrinks in the same 20/10/0 steps as mcc list --long. #21
  • Relative symlinks (such as skills/x -> ../../.agents/skills/x) are re-resolved from their source location, so cloned profiles don't get broken links. #12

Security

  • Access tokens are kept in memory only, sent only to the usage endpoint for their own profile, and never printed, logged or written to disk. Expired tokens are never sent. #15
  • GitHub private vulnerability reporting is enabled, and [email protected] is listed as the security contact. #21