v3.10.4
Fixed — lean-ctx update --help no longer installs an update
lean-ctx update --help(and-h, and the same flags onenable-gpu)
now print the command's options. Before, the flag was ignored and the
command downloaded and installed the latest release.- An unknown option, for example a typo like
--chek, is refused with exit
code 2 instead of running an update.--forceand--rewireare still
accepted, and still have no effect, because older instructions mention them.
Fixed — the value status line now reaches existing Claude Code installs
- 3.10.3 added lean-ctx's status line (
◆ lean-ctx −13.1K tok) to Claude
Code, but it was only written bylean-ctx init --agent claude. Installs
that were updated, or set up withlean-ctx setup, never got it. The hook
refresh that runs on update and when the MCP server starts now sets it too.
A status line of your own is never replaced. To switch the status line off,
set[value_display] mode = "off". - A
"statusLine": nullentry in Claude'ssettings.jsonis now replaced.
Before, lean-ctx reported the status line as set but wrote nothing. - Turn recaps now appear in a normal session: every 5 turns when the window
saved at least 10K tokens (was every 10 turns and 50K, which most sessions
never reached). A security event still always gets a recap. Existing
recap_every_turns/recap_min_tokenssettings are kept.
Fixed — OpenCode, Windows paths and allowlist noise
- OpenCode: shadow mode now sets
read,grep,globandbashto"ask"
instead of"deny"inopencode.json(#1864). OpenCode removes a denied
tool from the request, and the OpenCode Zen free tier refuses requests
withoutbashandreadwith a 403.lean-ctx setuprewrites the
"deny"entries older releases wrote; uninstall removes both values. - The rewritten
lean-ctx read/grep/lscommands now quote the lean-ctx
path. Before, a binary under a path with a space, such as
C:\Program Files\..., was split by the shell and the command failed with
exit 127 (#1865). - Warn-only allowlist findings (command substitution, pipe into an
interpreter) are logged atinfoinstead ofwarn, so they no longer show
up on stderr of every command. Log output carries ANSI colour codes only
when stderr is a terminal (#1866). git --version | head -1; python --versionis no longer reported as a pipe
into a bare interpreter. Only the command that actually receives the pipe is
checked (#1867).
Fixed — ctx_shell can no longer suspend the agent in your terminal
- A command run through
ctx_shellnow starts in its own session without a
controlling terminal. Before, an interactive shell somewhere below it (a
test suite that runszsh -iorbash -i, for example) took over the
terminal, and the terminal stopped Claude Code: zsh printed
suspended (tty input) claudeand the terminal was left in mouse mode.
Commands that need a terminal now fail right away instead of freezing
the agent. - lean-ctx's own prompt-integration tests no longer take over the terminal
whencargo testruns in one.
Upgrade
lean-ctx update # recommended (auto-downloads + refreshes shell hooks)
cargo install lean-ctx # or
npm update -g lean-ctx-bin # or
brew upgrade lean-ctxNote: After upgrading via cargo/npm/brew, run
lean-ctx setupto refresh shell aliases.lean-ctx updatedoes this automatically.
Full Changelog: v3.10.3...v3.10.4