Skip to content

v0.52.0

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Aug 02:36
e473bdd

Changed

  • pre-commit hooks install agnix themselves
    (#1439). The three hooks in
    .pre-commit-hooks.yaml move from language: system to language: python,
    so pre-commit and prek create a virtualenv and pull the agnix wheel that
    matches the pinned rev instead of requiring a manual cargo install on
    PATH. This is what the new PyPI distribution makes possible. A root
    pyproject.toml exists solely for that install: pre-commit clones the repo
    and pip install .s it, so the clone has to be pip-installable, and this shim
    declares the matching agnix==<version> as its only dependency.
    scripts/sync-versions.sh moves the shim's version and its pin together, so a
    hook pinned at rev: vX.Y.Z always runs agnix X.Y.Z. Platforms without a
    wheel can still pin language: system in their own config, which the
    configuration guide now documents.

Added

  • CC-SET-028: invalid feedbackDrafts setting
    (#1435). Claude Code v2.1.247
    added the SendFeedback tool and the feedbackDrafts setting that governs it.
    The setting is a string enum - notify, quiet, or off - so the natural
    guess of a boolean silently leaves the default notify in place. Flags any
    value outside the documented enum.
  • CC-SET-029: invalid spinnerTipsOverride shape
    (#1435). v2.1.247 extended the
    key with tip objects (id, text, cooldownSessions, priority), tipsFile,
    and label. Claude Code drops an invalid tip with a debug warning instead of
    rejecting the file, so a malformed tip is simply never shown. Validates the
    object's fields, each tip entry, the documented id/text limits, the
    0-1000 and -10-10 numeric ranges, the 40-character label cap, and
    that tipsFile is absolute or ~/-rooted.
  • CC-PL-016: plugin name not kebab-case. The plugin reference documents
    name as a kebab-case identifier with no spaces, and v2.1.247 hardened
    marketplace handling to reject names containing control or invisible
    characters. Those fail kebab-case by construction, so this catches them before
    a plugin reaches a marketplace.

Fixed

  • SendFeedback and ListAgents reported as unknown tools
    (#1435). KNOWN_AGENT_TOOLS
    had not been refreshed since 2026-07-31, so CC-AG-009/010 flagged two
    documented built-in tools - ListAgents from Claude Code v2.1.224 and
    SendFeedback from v2.1.238 - as invalid names in an agent's tools or
    disallowedTools list. Diffed the whole list against the live tools reference,
    and these were the only two missing.

Changed

  • Tool baselines refreshed (closes
    #1435,
    #1436,
    #1437). Claude Code
    v2.1.246 to v2.1.247, Cline v4.1.15 to v4.1.16, and Codex CLI
    rust-v0.149.1 to rust-v0.150.0. Cline's release moves hook workspace
    resolution from shared global state to the VS Code window, which changes
    runtime behaviour rather than any validated file contract. Codex adds an
    Interrupt hook event; CDX-PL-013 validates hook shape without an event-name
    allowlist, so nothing false-positives, and the missing allowlist is recorded in
    RESEARCH-TRACKING along with the uncovered spinnerVerbs setting.

Fixed

  • Tool-release triage produced no summaries. Two separate faults, both of
    which the watcher degrades silently to "post the raw changelog": the
    GLM_API_KEY secret had expired, and scripts/glm-extract.js ran with an
    output budget too small for a thinking model. Reasoning tokens are drawn from
    the same max_tokens budget as the answer, so at 4096 the model intermittently
    spent the entire budget reasoning and returned finish_reason: "length" with
    empty content (reproduced at 1 failure in 3 runs, 4095 of 4096 tokens on
    reasoning). MAX_TOKENS is now 32768, roughly six times the 1.9k-5.2k
    reasoning observed on real triage prompts, and thinking stays enabled because
    it measurably improves the "does this touch a validated config surface?"
    judgement. The default model is now named glm-5.3 explicitly rather than
    relying on the endpoint's glm-5 alias, so an alias move cannot change triage
    behaviour silently. The empty-content error now also reports finish_reason,
    reasoning size, and usage instead of just "empty content", and
    scripts/glm-extract.test.js - which no workflow ran - is now part of CI.