Skip to content

Chameleon

v2.15.0 Feature

This release adds 3 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

Affected surfaces

breaking_upgrade auth

Summary

AI summary

Refresh now fetches the latest production reference by default.

Full changelog

Refresh now derives from the genuinely-latest production, not the user's last
fetch. When a repo has a locked production_ref, /chameleon-refresh and the
background auto-refresh run one bounded git fetch origin <branch> before
resolving the tip — DEFAULT-ON, the one network path made default-on by design.

Added

  • Production-ref fetch-before-refresh (auto_refresh.fetch_production_ref,
    default true; kill switch CHAMELEON_FETCH_PRODUCTION_REF=0). Before refresh
    resolves the locked production tip, it fetches origin <branch> so the
    derivation sees the latest production rather than whatever the user last
    fetched. One fetch site in refresh_repo serves both manual and auto-refresh;
    bootstrap/init never fetch. The outcome rides out in the refresh envelope's
    production_ref_fetch block and auto_refresh.log, so a stale derivation
    always says WHY.
    • Hang-proof + non-interactive. The fetch runs with GIT_TERMINAL_PROMPT=0,
      an empty askpass, and SSH BatchMode=yes so a missing credential is a clean
      failure, never a prompt; a hard CHAMELEON_PRODUCTION_REF_FETCH_TIMEOUT_SECONDS
      (default 10) wall-clock plus a process-group SIGKILL (taskkill tree on
      Windows) backstops a stuck transfer.
    • Fails open, classified, surfaced. Any non-ok outcome (timeout /
      no_network / auth / no_remote_ref / concurrent / unknown) falls back to the
      existing last-fetched ref and reports a specific reason — the auth reason
      tells the user the exact git fetch origin <branch> to run by hand.
    • Self-suppresses where a surprise network call is wrong. Off under CI,
      off when the branch is not origin-backed (re-detected, not inferred), and a
      CHAMELEON_PRODUCTION_REF_FETCH_BACKOFF_HOURS (default 6) backoff after a
      persistent auth/branch-gone failure so a misconfigured remote isn't re-hit
      every session. NO fetch on any hook hot path (PreToolUse/PostToolUse/
      SessionStart stay offline).

This is a deliberate, single exception to the "network paths stay opt-in"
principle, made default-on by maintainer decision and surfaced here rather than
buried. Designed via a multi-agent panel with adversarial review; shipped with a
fake-git-shim test battery (classifier, timeout-kill, non-interactive env,
backoff) plus real-local-origin integration and hot-path no-fetch assertions.

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]