Skip to content

Chameleon

v4.4.51 Feature

This release adds 2 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

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

Summary

AI summary

Fixed Bash exit status recording to correctly log zero when successful, avoiding false -1 sentinel.

Changes in this release

Feature Low

Adds `scripts/qa-mcp-call.py` to call an MCP tool over real stdio transport.

Adds `scripts/qa-mcp-call.py` to call an MCP tool over real stdio transport.

Source: llm_adapter@2026-07-20

Confidence: medium

Feature Low

Adds `--ledger PATH` option to `scripts/qa-matrix.py` for separate cell ledger files.

Adds `--ledger PATH` option to `scripts/qa-matrix.py` for separate cell ledger files.

Source: llm_adapter@2026-07-20

Confidence: medium

Bugfix Medium

Correctly records Bash exit status in PostToolUse tool_response.

Correctly records Bash exit status in PostToolUse tool_response.

Source: llm_adapter@2026-07-20

Confidence: medium

Full changelog

Fixed

  • Bash exit status recorded from the event, not an absent payload key. The Bash
    PostToolUse tool_response carries no exit status at all -- a captured live payload is
    {stdout, stderr, interrupted, isImage, noOutputExpected} -- so reading a status key under
    any spelling always missed and every command logged the -1 absent-value sentinel. With
    session_test_run_seen requiring a zero exit, the turn-end "no passing test run this turn"
    advisory was unsatisfiable no matter how much the user tested (measured on the plugin's own
    repo: 37,291 of 37,293 rows recorded -1). PostToolUse fires only after a tool call
    succeeds -- a failed call raises PostToolUseFailure, which the hook is not registered for --
    so an uninterrupted Bash response object now records exit 0. An explicit exit_code /
    returnCode still wins when a host sends one, and an absent or non-dict response keeps the
    sentinel. The contract test that guarded this asserted the broken behaviour, written from the
    same misreading of the docs, and now uses the captured payload shape as its fixture.

Added

  • scripts/qa-mcp-call.py (dev tooling): calls an MCP tool over the real stdio transport,
    launching the server exactly the way .mcp.json does, so a verification run exercises the
    wire rather than an in-process import.
  • scripts/qa-matrix.py --ledger PATH: point the cell ledger commands at a different cell file
    so an independent re-verification keeps its verdicts separate from the run it audits.

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]