Repository navigation
v0.39.0
·
3 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Watcher 0.39.0 adds GitHub Copilot CLI recording and tool review through the Python SDK, on-demand Deep Review reports in the Analyzer, and a collection of SDK integration examples alongside a raw provider format for the pre-tool-use hook.
Breaking changes
- Added: On-demand Deep Review on self-host deployments runs through a new
operation-workerservice that is off by default; on an existing install, addoperation-workertoCOMPOSE_PROFILES(see the updated.env.example) to use the Analyzer's Generate report feature, which requires PostgreSQL 17 or later. - Changed: In the API, agent filters that use
Otherno longer return sessions from recognized SDK coding agents such as GitHub Copilot CLI; these sessions, including historical ones whose adapter IDs are retained, are now reported under the agent's own name, so select those agents explicitly (for Copilot,agent_platforms=["github_copilot_cli"]). No reinstall or sign-in is required. - Changed: In the API and Analyzer, gateway hook sessions other than Aperture now get their source from the conversation ID:
watcher-gateway(Gateway) for gateway examples such as LiteLLM,watcher-sdk(Watcher SDK) for registered SDK agents such as Copilot, andwatcher-hook(Hooks API) for anything else. A saved filter or query that usedwatcher-hookto find all of these sessions must add the other two. In the Analyzer, theOtheragent filter likewise excludes recognized SDK agents, which now show their own name. - Changed: In the API and Analyzer, new generic raw-hook captures are now labeled with the
watcher-hooksession source instead of appearing under the Aperture source; selectwatcher-hookfor those sessions, while existing unmarked historical captures keep thetailscale-aperturelabel. - Changed: Validation errors (422) from
POST /v1/hooks/pre-tool-usenow include the request format in their location paths (for example["body", "watcher", "input"]instead of["body", "input"]); update any client code that inspects these paths. The locked-settings error keeps["body", "settings_overrides"]. - Changed: The Watcher client's
watcher doctoroutput now shows only problems by default, with each fix indented under the finding it addresses; inwatcher doctor --json, the remediation for approval-bypassing sessions moves from a separate warning into a newhintfield on the finding, and the Daemon section's autostart lines become a single sentence, so update any tooling that parses that output. - Changed: Qwen Code and Mistral Vibe conversations resumed after editing, committing or switching branch now stay in one Watcher session instead of splitting; at upgrade, each such conversation in progress opens one new session at its next capture, and conversations that were already split are not merged.
Live
- Added: The Watcher client can obtain renewable bearer tokens from your own CLI for deployments behind a validating auth gateway; configure a trusted executable with
watcher auth helper set, which must print a JSON object containing atokenstring. Existing authentication is unchanged. - Changed: When the server refuses an upload because the conversation is already recorded under a different Watcher user (usually a different Aperture login), the client now stops retrying that conversation, shows the developer a one-time notice with the fix for the deployment's authentication mode, and lists it under a new Uploads section in
watcher doctor; signing in again or reinstalling hooks allows one more upload under the new identity. - Fixed: On macOS, the Watcher daemon now starts after login on machines where launchd loaded the agent but deferred its start, and
watcher doctorreports that state with a pointer towatcher autostart startinstead of only saying the backend is not responding.
Analyzer
- Added: A Generate report button on the session view queues a Deep Review for the current transcript; the page shows Report queued or Grading in progress on load, keeps an existing report visible while an update runs, and offers Retry after a failed review.
- Added: Sessions now show how their messages reached Watcher, and the session list can filter by one or more sources in combination with the coding-agent filter; Aperture messages share one label, custom sources keep their names, and sessions with deleted content show no sources.
- Changed: Searching sessions by name is substantially faster on large organizations, with identical results.
API
- Added: GitHub Copilot CLI sessions can be recorded and their tool calls reviewed against server policy, covering reasoning, compaction, subagents and resumed sessions; Copilot users can sign in from the SDK without installing the Watcher app, or reuse a saved Watcher login for the same server. One command installs it for every Copilot session of your user on the machine, or for one project with
--project. Setup signs in with your Watcher login and does not accept API keys. New installs enable tool review by default (add--record-onlyduring setup to record only). - Added:
POST /v1/hooks/pre-tool-useacceptsformat: "raw", taking the client's provider request and the assembled provider response so gateways no longer convert messages into Watcher's transcript format, withpre_tool_use_hookin the Python SDK gaining matchingrequest_bodyandresponse_bodyparameters; the SDK source archive now also ships reference integration examples for agents, frameworks, model libraries, gateways and observability exporters, including a LiteLLM proxy callback built on the raw format. - Fixed: Deep Review now completes and the transcript decision audit loads on very long sessions that previously failed on every attempt, and Deep Review lists flagged tool calls made from inside Codex Code Mode programs with their own reference, input and gateway rationale so the reviewer can give an opinion on each.
Other
- Added: A Gateway deployment reference page in the self-hosting docs compares Aperture observation with LiteLLM enforcement, including where traffic flows, where tool calls can be blocked, credentials, enforcement modes and session verification.
- Changed: Self-host setup now checks the host's image-pull access before Docker login and loads the setup instructions for the bundle's release; the guide separates the customer's role from Apollo's pull role and explains the permissions needed in each account.
- Changed: The supported agents list now marks local Work in the ChatGPT desktop app as experimental through Aperture, matching Codex Desktop, while ChatGPT web and mobile, the Gemini apps and Antigravity desktop remain untested.