Releases: drknowhow/code-context-control
v2.34.0
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.
v2.33.0
v2.33.0 — Web security hardening
Security-hardening release closing a cross-origin / DNS-rebinding gap in C3's local web servers, plus two related hardenings and two c3_read fixes.
pip install -U code-context-control
🔒 Security
- Cross-origin / CSRF + DNS-rebinding hardening for all local web servers. The Hub, per-project UI, and Oracle bind to loopback but had no auth, no Origin/Host validation, and wildcard CORS — so any web page open in the user's browser could drive state-changing endpoints (the
launch-idecustom command, adding a malicious MCP server, downgrading Claude permissions, wiping data) and read the Oracle Discovery bearer token. A new shared guard (core/web_security.py) now enforces a Host-header allowlist (defeats DNS rebinding) + an Origin/Referer check on every request (defeats CSRF), and replaces wildcard CORS with scoped, same-origin reflection. Loopback and non-browser API clients are unaffected; non-loopback binds honourhost/bind_host+ an optionalallowed_hostslist. Oracle Discovery bearer auth still applies on top. api_projects_open(Hub + UI) now refuses non-directory paths, so it can no longer launch an arbitrary file via the OS default handler.c3_shellblocklist strengthened to also coverrm -rf /*,rm -rfof a whole top-level system directory, and Windows whole-drive-root wipes (del/rd/format C:\). Nested-path deletes stay allowed. Documented explicitly as a best-effort guard, not a sandbox.
🐛 Fixed
c3_readsilently returned the file map instead of source forlinesrange reads — MCP serializeslinesas a string (e.g."[22, 193]"), which fell through the range logic.linesis now coerced likesymbols.- Comma-separated
symbols("a,b,c") now split into multiple targets instead of being read as one ambiguous name.
✅ Quality
- New tests:
tests/test_web_security.py,tests/test_read_coercion.py; extendedtests/test_c3_shell.py. Full suite green across macOS/Ubuntu/Windows × py3.10–3.12.
See CHANGELOG.md for full details.
v2.32.2
What's Changed
- docs: add Oracle Discovery API section to the README by @drknowhow in #6
- chore(release): 2.32.2 docs release by @drknowhow in #7
Full Changelog: v2.32.1...v2.32.2
v2.32.1
C3 v2.32.1
First PyPI release since v2.30.0 — it brings everything merged in between: cross-project tools (2.31.0), the Oracle Discovery API (2.32.0), and dashboard token management (2.32.1).
🔮 Oracle Discovery API (2.32.0)
External LLMs — Claude Code / Desktop or any function-calling model — can point at a running Oracle and use C3's cross-project code & memory intelligence as tools, over MCP (HTTP/SSE) and a parallel OpenAPI REST surface that share one tool core. Read + safe-action tiers only (no code edits); Bearer-token auth (OS keyring); loopback-bound by default. New c3 oracle api {info,key,rotate,clear} CLI prints the token + a ready-to-paste .mcp.json snippet.
🔑 Dashboard token management (2.32.1)
Generate / rotate / clear / reveal / copy the Discovery API Bearer token from the Oracle dashboard (Settings → Discovery API), with live MCP / REST / OpenAPI URLs and a copyable .mcp.json entry. Backed by new /api/apikey/* endpoints.
🌐 Cross-project tools (2.31.0)
New c3_project MCP tool — discover and operate on other c3-installed projects (search / read / compress / status / memory / impact / edits / validate / filter), with guarded writes (edit, shell, memory mutations) behind an explicit allow_write=true, audited on the target project.
🔒 Notable change
The Oracle server now binds 127.0.0.1 by default (was 0.0.0.0); override via bind_host in ~/.c3/oracle/config.json.
Full curated notes per version: CHANGELOG.md.
What's Changed
- feat(2.31.0): cross-project tools - c3_project MCP tool by @drknowhow in #3
- feat(2.32.0): Oracle Discovery API - external LLM tool surface (MCP + OpenAPI) by @drknowhow in #4
- feat(2.32.1): Discovery API token management in the Oracle dashboard by @drknowhow in #5
Full Changelog: v2.30.0...v2.32.1
v2.30.0
What's Changed
- feat(2.30.0): Bitbucket Data Center / Server integration by @drknowhow in #2
New Contributors
- @drknowhow made their first contribution in #2
Full Changelog: v2.29.0...v2.30.0
v2.29.0
Full Changelog: v2.28.3...v2.29.0
v2.28.3
Full Changelog: v2.28.2...v2.28.3
v2.28.2
Full Changelog: v2.28.1...v2.28.2
v2.28.1
Full Changelog: v2.28.0...v2.28.1