Complete reference for all zenable CLI commands and options
Coming soon. The native zenable CLI is under active development and will replace zenable-mcp. This page will be updated as commands stabilize. For the current CLI, see the zenable-mcp CLI Reference.
Zenable CLI - conformance checking, IDE management, and hook handling for agentic IDEs.The zenable CLI is the native Go binary that replaces the older Python-based zenable-mcp package. Install it via the Getting Started guide.
Note: You can use unified commands like install cursor or install claude-code, or use subcommands like install mcp cursor and install hook claude-code. The unified commands are simpler and install all features.
Preview what would be done without actually performing the installation
-g, --global
Install globally in user’s home directory instead of project directory
--include TEXT
Include only directories matching these glob patterns (e.g., '**/microservice-*')
--exclude TEXT
Exclude directories matching these glob patterns
--all
Install for all supported IDEs, even if not currently installed
-h, --help
Show help message
Running outside a git repository? The installer will search for git repositories below your current location and present an interactive TUI to select which repositories to install into. You can select one or more repositories, or choose to install globally.
# Install for all detected IDEs (recommended)zenable install# Install for a specific IDE using unified command (recommended)zenable install cursorzenable install claude-code# Install Zenable for all detected IDEs, globallyzenable install --global# Preview what would be done without installingzenable install --dry-run# Advanced: Install only MCP (without hooks) for all detected IDEszenable install mcp# Advanced: Install only MCP for a specific IDEzenable install mcp cursor# Advanced: Install only hookszenable install hookzenable install hook claude-codezenable install hook cursor
Check the provided files against your conformance tests.
Report incorrect code
Copy
zenable check [OPTIONS] [PATTERNS]...
Automatically detects files from IDE context when no patterns are provided.
Supports glob patterns like **/*.py to check all Python files recursively.
Files are processed in batches of 5 for optimal performance.
The check command supports configuration via environment variables:
Environment Variable
Description
Default
ZENABLE_CHECK_BASE_BRANCH
Default base branch to compare against when using --branch
main
Example
Report incorrect code
Copy
# Set default base branch to developexport ZENABLE_CHECK_BASE_BRANCH=develop# Now --branch uses develop instead of mainzenable check --branch# CLI option still overrides env varzenable check --branch --base-branch feature/base
# Check a single filezenable check example.py# Check all Python files recursivelyzenable check '**/*.py'# Check multiple patternszenable check 'src/**/*.js' 'tests/**/*.js'# Exclude test files from checkingzenable check '**/*.py' --exclude '**/test_*.py'# Specify base directory for pattern matchingzenable check '*.py' --base-path ./src# Check all files changed on current branch compared to mainzenable check --branch# Check all files changed on current branch compared to developzenable check --branch --base-branch develop# Check only Python src files changed on current branchzenable check --branch '**/*.py' --exclude '**/test_*.py'# Dry run to see which files would be checkedzenable check '**/*.py' --dry-run
This command is specifically designed for IDE integrations like Claude Code and Cursor.
It reads hook input from stdin, processes the files, and returns appropriate
exit codes and formatted responses for the IDE to handle.To manually run a scan, use the check command instead.
Reverted files are not reviewed. When an agent modifies a file and then reverts it back to match the base branch (e.g., via git checkout), the hook will report “No files to process” because there is no net change compared to the base branch. This is expected behavior — Zenable reviews the diff, not individual edits, so if the final state matches what’s already on the base branch, there’s nothing new to review.
Opens a browser to complete the OAuth authentication flow. Credentials are cached locally for future commands. If already authenticated, skips re-authentication.
# All Python files recursively'**/*.py'# Multiple extensions'**/*.{js,ts,jsx,tsx}'# Specific directory'src/**/*.py'# All files in current directory'*'# All files recursively'**/*'# Specific depth'*/*.py' # One level deep'*/*/*.py' # Two levels deep
# Maximum verbosityzenable -vv install# Run a check with verbose outputzenable -v check '**/*.py'# View debug logszenable logs --lines 100# Run diagnosticszenable doctor