Shell Hook

95+ Command Patterns.
Transparent Compression.

The shell hook intercepts CLI output before your AI sees it. Git diffs, npm installs, cargo builds, docker logs - all compressed to their essential information. No configuration, no aliases to learn.

34+ command categories 95+ specific patterns 60–90% output reduction
Flow

How it works.

The shell hook wraps your commands transparently. The AI sees compressed output - you see nothing different.

1

Command

AI runs git status

2

Hook

lean-ctx intercepts output

3

Compress

Pattern-matched reduction

4

Result

AI sees compact output

34+ Categories

Every tool you already use.

lean-ctx recognizes output patterns from all major developer tools and compresses each one with purpose-built rules.

Version Control

git status git diff git log git branch git stash git remote

JavaScript / Node

npm install npm run npm test yarn pnpm tsc

Rust

cargo build cargo test cargo clippy cargo check cargo run

Containers & Orchestration

docker ps docker build docker logs kubectl get kubectl describe

Python

pip install pytest python -m poetry uv

System & Utils

ls / find ps / top curl make env cat / head
Before & After

See the difference.

Without shell hook ~580 tokens
git status
On branch feature/auth
Your branch is ahead of 'origin/feature/auth'
by 3 commits.
  (use "git push" to publish your local
   commits)

Changes to be committed:
  (use "git restore --staged <file>..."
   to unstage)
        new file:   src/session.ts
        modified:   src/login.ts
        modified:   src/api.ts

Changes not staged for commit:
  (use "git add <file>..." to update
   what will be committed)
  (use "git restore <file>..." to
   discard changes in working directory)
        modified:   src/session.ts

Untracked files:
  (use "git add <file>..." to include
   in what will be committed)
        src/session.test.ts
With shell hook ~75 tokens
git status (compressed)
feature/auth ↑3
staged: +session.ts ~login.ts ~api.ts
unstaged: ~session.ts
untracked: session.test.ts
[534 tok saved (87%)]
More Examples

Every command, compressed.

npm install - raw ~420 tokens
npm install
npm warn deprecated inflight@1.0.6:
  This module is not supported...
npm warn deprecated glob@7.2.3:
  Glob versions prior to v9...
npm warn deprecated rimraf@3.0.2:
  Rimraf versions prior to v4...

added 847 packages, and audited
848 packages in 12s

127 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm install - compressed ~35 tokens
npm install (compressed)
 847 packages 12s
 3 deprecated (inflight, glob, rimraf)
0 vulnerabilities
[385 tok saved (92%)]
cargo build - raw ~310 tokens
cargo build
   Compiling proc-macro2 v1.0.86
   Compiling unicode-ident v1.0.12
   Compiling syn v2.0.72
   Compiling serde_derive v1.0.204
   Compiling serde v1.0.204
   Compiling tokio v1.39.2
   Compiling lean-ctx v2.1.0
    Finished `dev` profile [unoptimized
    + debuginfo] target(s) in 24.3s
cargo build - compressed ~30 tokens
cargo build (compressed)
 build dev 24.3s
7 crates compiled
[280 tok saved (90%)]

Works independently

The shell hook operates independently of the context server. AI tools that haven't been configured yet still benefit from compressed shell output. The hook intercepts at the shell level, so every tool that runs commands gets savings.

Cursor Claude Code GitHub Copilot Aider Any shell-based AI
Coverage

Pattern coverage at a glance.

34+
Command categories
95+
Specific patterns
87%
Avg. git compression
0
Config required

Docker & Container Environments

In containers, non-interactive shells skip ~/.bashrc. Set BASH_ENV to point at lean-ctx's dedicated env.sh file, which has no interactive-mode guard. For Claude Code, also set CLAUDE_ENV_FILE.

# In your Dockerfile:
ENV BASH_ENV="/root/.lean-ctx/env.sh"
ENV CLAUDE_ENV_FILE="/root/.lean-ctx/env.sh"

lean-ctx includes self-healing: if the env.sh file is removed (e.g., by a container rebuild), lean-ctx init --global re-creates it automatically.

Need full output? Use raw mode.

When you need uncompressed output, bypass compression with a single flag. No more silent data loss - truncation is always transparent.

# CLI flag - skip compression for one command
lean-ctx -c --raw kubectl get pods -o yaml

# Shell function - quick bypass
lean-ctx-raw gh pr view 42

# Kill-switch - disable ALL compression
LEAN_CTX_DISABLED=1 lean-ctx -c git log

# MCP parameter - for AI agents
ctx_shell(command="cat config.json", raw=true)

Start saving with every command.

One setup command enables the shell hook for your shell. Every AI command thereafter is automatically compressed.