Skip to content

Chameleon

v2.38.32 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

Topics

ai-coding-assistant archetype ast-analysis claude-code claude-plugin code-conventions
+12 more
code-review code-style developer-tools javascript linter mcp mcp-server prompt-engineering python ruby rails typescript

Affected surfaces

auth

Summary

AI summary

Security deny now unconditionally blocks credential/eval even with zero witnesses, and cross‑file damage is correctly reported for Python indexes.

Full changelog

Two effectiveness fixes from the verified roadmap: the credential/eval deny no
longer depends on witness-count calibration, and the cross-file tools stopped
mislabeling a damaged Python index as a TypeScript-only feature.

Fixed

  • Security deny un-gated from the witness floor. active_block_rules now
    seeds the two calibration-exempt security rules (secret-detected-in-content
    hard kinds, error-severity eval-call) unconditionally. Calibration never
    measures them (the committed-corpus pass runs no content scans), so their
    persisted verdict carried only the n > 0 witness floor — which disarmed the
    PreToolUse credential/eval deny on exactly the repos most exposed: fresh,
    small, or sparse zero-witness profiles, legacy artifacts, and missing/torn
    enforcement.json. A planted zero-witness profile could switch the
    credential deny off; it no longer can. Trust, enforcement.mode,
    CHAMELEON_ENFORCE=0, and the rule-named chameleon-ignore override are
    unchanged and still gate actual blocking. calibrate_block_rules writes the
    two entries with exempt_reason: "security-rule" for artifact provenance;
    get_status lists them active on any profiled repo (never on unprofiled
    ones) and never as demoted; the torn-artifact banner now says the
    credential/eval deny stays armed. Note: repos with committed fixture keys
    that previously slipped the zero-witness gate now get the deny — the
    rule-named ignore directive is the escape, and comment-less formats (JSON)
    need the fixture moved or enforcement.mode: "shadow".
  • Cross-file damage no longer reads as "typescript-only".
    query_symbol_importers / get_crossfile_context reported typescript-only
    for every non-TS profile, mislabeling a damaged or missing Python
    reverse_index.json (built for Python since the Python program landed) as
    by-design absence and suppressing the repair suggestion. New contract:
    index-unavailable = the profile's language should have the index, run
    /chameleon-refresh; unsupported-language = by-design absence (e.g. a
    stray .ts file in a Ruby profile, a stray .rb in a Python profile — the
    latter previously got a dead-end "re-run refresh" loop from the constant-index
    path). The build gate, the refresh-repair check, and the read tools now share
    symbol_index.REVERSE_INDEXED_LANGUAGES so they cannot drift; Ruby damage in
    get_crossfile_context (missing constant index) reads as repairable damage.

Added

  • Comprehension routing in using-chameleon. The skill now tells the main
    loop when to reach for search_codebase / get_callers / get_blast_radius
    / query_symbol_importers / describe_codebase (before renames, signature
    changes, side-effect assumptions), with an honesty note keyed to the
    index-unavailable / no-calls-index / unsupported-language reasons. The
    MCP-visible docstrings of both crossfile tools drop their stale
    "TypeScript-only" headlines.

Security Fixes

  • `active_block_rules` now seeds the two calibration‑exempt security rules (`secret-detected-in-content`, `eval-call`) unconditionally, removing the zero‑witness disarm of credential/eval deny.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Chameleon

Get notified when new releases ship.

Sign up free

About Chameleon

All releases →

Related context

Earlier breaking changes

  • v3.0.0 MCP surface folded from 48 tools to 19; remaining 32 operator tools become actions on three dispatchers.

Beta — feedback welcome: [email protected]