Skip to content

v0.39.0

Choose a tag to compare

@apollo-watcher-release apollo-watcher-release released this 02 Oct 14:40
· 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-worker service that is off by default; on an existing install, add operation-worker to COMPOSE_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 Other no 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, and watcher-hook (Hooks API) for anything else. A saved filter or query that used watcher-hook to find all of these sessions must add the other two. In the Analyzer, the Other agent 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-hook session source instead of appearing under the Aperture source; select watcher-hook for those sessions, while existing unmarked historical captures keep the tailscale-aperture label.
  • Changed: Validation errors (422) from POST /v1/hooks/pre-tool-use now 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 doctor output now shows only problems by default, with each fix indented under the finding it addresses; in watcher doctor --json, the remediation for approval-bypassing sessions moves from a separate warning into a new hint field 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 a token string. 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 doctor reports that state with a pointer to watcher autostart start instead 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-only during setup to record only).
  • Added: POST /v1/hooks/pre-tool-use accepts format: "raw", taking the client's provider request and the assembled provider response so gateways no longer convert messages into Watcher's transcript format, with pre_tool_use_hook in the Python SDK gaining matching request_body and response_body parameters; 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.