Install the CLI
You need Git 2.39 or newer and the tools your repository uses to build and run tests. The supported environments for running checks are macOS, Linux and WSL on Windows. Install inside the environment where you will run checks:
curl -fsSL https://commitscale.com/cli/install.sh | sh
Follow the installer's PATH instructions, then open a new terminal if needed. Agent shells may not keep exported PATH changes between commands. If cscale is not found, use ~/.local/bin/cscale in its place. The pre-push hook, MCP and harness hooks run cscale by name, so before cscale init, add ~/.local/bin to your shell profile and check that command -v cscale finds it in a new shell.
On a Mac, you can install with Homebrew instead:
brew install commitscale/tap/cscale
Confirm the installation:
cscale --version
Sign up
Replace the example address with the person's email address:
cscale signup --email you@example.com
The person opens the verification email and confirms the link. The command waits up to 15 minutes for that click, then saves a check-only key privately. With command timeouts, run it in the background and wait for it to exit. Do not start a second sign-up while one waits: each invocation starts a separate attempt, and does not resume the first. Once a key is saved, sign-up refuses to replace it.
An agent can do the remaining setup. This key can run model checks; it cannot manage the person's account or billing. Read the sign-up command for its options.
For an existing account on another machine, skip sign-up. First sign in with the account's email:
cscale auth login --email you@example.com
The person opens the emailed link, checks the code against the terminal, and approves. This does not need an existing browser session. The link lasts 15 minutes. Then create a check-only key:
cscale key create
For the emailed sign-in, open the link and type the code shown in the terminal. Five wrong codes refuse the sign-in; start again if that happens. The link lasts 15 minutes.
The person approves key creation with their passkey when requested. Sign-in and key creation wait for the person, so with command timeouts run them in the background and wait for them to exit. Init keeps the personal sign-in and key you already made.
You can instead run cscale init with no saved credentials. It asks the person to approve on the browser device page and then saves a check-only key. That page needs a browser sign-in with an email link, passkey or provider from the last 10 minutes. If the sign-in is older, sign in again and enter the terminal's code. This flow also waits for the person.
Set up your repository
Open a clone of your repository. Fetch its target branch and commit the change you want to check. Checks use committed inputs; uncommitted edits are excluded.
git fetch origin
The target defaults to the repository's configured target or origin/HEAD. If there is no origin/HEAD, set the target once before init. Replace origin/main if your fetched target branch has another name:
git config commitscale.target origin/main
The --base option sets the target for one command only. The pre-push hook needs the configured target or origin/HEAD; git symbolic-ref refs/remotes/origin/HEAD shows whether origin/HEAD exists.
cscale init
Init installs the pre-push hook and starts a first check in the background. It adds MCP, the skill and supported harness hooks only for .claude or .codex directories at the repository root. If yours is absent, choose the integration explicitly with cscale init --for claude-code or cscale init --for codex.
The check executes your repository's code with the tools installed on this machine.
Read the first result
cscale tests status
Status shows the latest background check and returns immediately. It shows starting or running until the check ends as finished, failed or interrupted. After interrupted, run cscale tests check. To run a check in the foreground:
cscale tests check
Checks can take minutes. With command timeouts, run cscale tests check in the background and wait for its exit status. Running it again resumes saved work when the inputs still match.
Read the report, fix the uncovered behavior or failing tests, commit, and rerun. An incomplete result is not a pass. See the test check for the repair loop, or agents and MCP to connect a coding agent.