v2.34.0 — Tooling robustness & security observability
Improvements surfaced while exploring the tool, focused on day-to-day Windows friction and defense-in-depth.
pip install -U code-context-control
⚡ c3_shell
- Forces UTF-8 in child processes and decodes output as UTF-8 — fixes
cp1252UnicodeEncodeErrorcrashes when a command prints→, box-drawing, or emoji on Windows. - Self-sweeps stray 0-byte "ghost" files created during a command (shell-redirect / metacharacter artifacts like a
>Lnnnmarker or2>$nullleaking a filename), and reports them. Install-independent and only removes files that appeared during the command — pre-existing files are never touched. - No longer auto-filters
git status/diff/log/show/branchoutput — those are needed verbatim.
🔒 Security
- Guard observability: a startup log line and a
web_guardblock in the UI/api/healthconfirm the localhost guard (2.33.0) is active. - MCP transport Host allowlist: the Oracle MCP server (
:3332) now rejects requests whoseHostheader isn't loopback or the configuredbind_host/allowed_hosts— defense-in-depth against DNS rebinding, on top of the Bearer gate.
🧹 Refactor
- De-duplicated the MCP-section TOML helpers (parse / upsert / remove / escape) that had drifted between
cli/server.pyandcli/hub_server.pyinto a single sharedcore/mcp_toml.py(reconciled: quote-stripped keys, unlink an emptied config file). Net −235 lines across the two servers.
✅ Quality
- +23 tests (
test_shell_robustness,test_mcp_host_guard,test_mcp_toml); full suite 381 passing across macOS/Ubuntu/Windows × py3.10–3.12.
See CHANGELOG.md for full details.