Skip to content

Releases: ChrisRomp/copilot-bridge

0.16.0

Choose a tag to compare

@ChrisRomp ChrisRomp released this 17 Jun 05:01

Context Tier Support and SDK Updates

This release adds full support for SDK 1.0.51 model context parameters with improved UX and fixes token pricing display.

Features

  • Context tier management -- New /context-tier command to switch between default and long context tiers. Accepts friendly aliases (long, max, maximum). Tier-aware context limits now show accurate tier-specific maximums in /context output instead of the absolute model ceiling. (#242)
  • Reasoning effort clearing -- /reasoning now properly clears reasoning effort when set to empty by mapping null to SDK "none" value. Previously omitting the field would preserve the current setting. (#242)

Fixes

  • /models token pricing -- Fixed billing column display for SDK 1.0.1+ which uses camelCase tokenPrices format instead of snake_case. Reasoning support indicator moved to dedicated column. (#242)
  • Model parameter persistence -- Context tier and reasoning effort settings now only persist after successful RPC, preventing invalid states when the model rejects parameter changes. (#242)

Dependencies

  • @github/copilot 1.0.50 -> 1.0.51
  • @mattermost/client 11.6.0 -> 11.7.0
  • @mattermost/types 11.6.0 -> 11.7.0
  • @slack/bolt 4.7.2 -> 4.7.3
  • better-sqlite3 12.10.0 -> 12.11.1
  • tsx 4.22.3 -> 4.22.4
  • vitest 4.1.8 -> 4.1.9

0.15.0

Choose a tag to compare

@ChrisRomp ChrisRomp released this 20 May 22:14
9a7cecd

Node 26 Support, Drop Node 20

Dependency consolidation and platform update.

Breaking Changes

  • Node 20 dropped -- Node 20 reached EOL in April 2026. Minimum supported version is now Node 22.

CI

  • Node 26 added to the test matrix.

Dependencies

  • @github/copilot 1.0.45 -> 1.0.50
  • better-sqlite3 12.9.0 -> 12.10.0
  • tsx 4.21.0 -> 4.22.3
  • vitest 4.1.5 -> 4.1.7
  • ws 8.20.0 -> 8.20.1

0.14.1

Choose a tag to compare

@ChrisRomp ChrisRomp released this 11 May 17:55
7642f60

Security Patch

Dependencies

  • @github/copilot security vulnerability fix (#220)

0.14.0

Choose a tag to compare

@ChrisRomp ChrisRomp released this 11 May 17:30
6e7666f

Persistent Agent Memory and Billing Display Fix

This release adds a persistent memory system for agents and fixes the /model billing display for accounts on token-based pricing.

Features

  • Persistent agent memory -- Agents can now retain context across sessions via MEMORY.md in workspace roots. On session compaction, key learnings are automatically saved. After idle periods, an ephemeral session consolidates and organizes the memory file. Cloud memory tools (store_memory/vote_memory) are excluded by default; enable with memory.cloudMemory: true. (#217)

Fixes

  • /model billing display -- Fixed undefinedx in the Billing column for accounts using token-based pricing. The /model listing now shows Input, Cached input, and Output costs per 1M tokens. Accounts still on the legacy multiplier format continue to work. Includes a note for Anthropic cache write costs not reported by the API. (#218)

Dependencies

  • @github/copilot 1.0.36 -> 1.0.42
  • @slack/bolt 4.7.0 -> 4.7.2
  • axios security patch

v0.13.1

Choose a tag to compare

@ChrisRomp ChrisRomp released this 27 Apr 06:29
0689632

Breaking Fix

  • SDK 0.3.0 compatibility -- Upgraded to @github/copilot-sdk@0.3.0 and @github/copilot@^1.0.36. Permission vocabulary updated across all callsites (approved -> approve-once, denied-* -> reject/user-not-available). Without this update, tool approvals silently fail on CLI >= 1.0.25. (#202, #203)

Features

  • AGENTS.local.md -- Per-operator local instructions loaded from each bot's working directory. Intended to be gitignored for conventions that don't belong in the repo. Injected into sessions via custom_instructions, including inter-agent sessions. (#193)

Fixes

  • Fix agent resolution for plugin-based agents in /agents command (#192)
  • Remove duplicative workspace skill discovery (#192)
  • Add MCP server logging and delete empty stream messages (#188)
  • Replace local SDKProviderConfig type with SDK ProviderConfig import (#203)

Testing

  • Add 8 tests for hook permission vocabulary resolution path (#203)

Dependencies

  • @mattermost/client ^11.5.0 -> ^11.6.0
  • @mattermost/types ^11.5.0 -> ^11.6.0
  • better-sqlite3 ^12.6.2 -> ^12.9.0
  • follow-redirects 1.15.11 -> 1.16.0 (security fix)
  • vitest ^4.1.4 -> ^4.1.5

New Contributors

0.13.0

Choose a tag to compare

@ChrisRomp ChrisRomp released this 03 Apr 00:48
d9d2ecd

Pluggable storage, /config command, and error observability

Features

  • Pluggable StateStore interface -- The bridge's state persistence is now behind a StateStore interface with 35 methods including withTransaction(). Custom backends (Postgres, Redis, etc.) can be loaded at startup via the database.module config option. The built-in SqliteStateStore remains the default. (#179, #176)

  • /config command -- Shows the effective configuration for the current channel in a markdown table with Setting / Value / Source columns. Traces each value back to its origin: defaults, config.json, dynamic registration, bot config, channel prefs, or the active session. (#184)

Improvements

  • Async store layer -- All state store functions are now async. Store writes from post-RPC paths are best-effort so a slow or failed write never blocks session operations. Added error logging and database observability across all store calls. (#177)

  • Error observability -- Eliminated all silent catch {} blocks in session-manager.ts and index.ts. Every catch now emits at minimum log.debug. High-severity catches (user-visible failures like readPlan, getAuthStatus, listModels) emit log.warn. Added safeDestroySession() helper to replace 8 identical silent destroy patterns. (#185, #178)

Dependencies

  • @mattermost/client 10.3.0 -> 11.5.0
  • @mattermost/types 10.3.0 -> 11.5.0
  • vitest 4.1.1 -> 4.1.2

Tests

683 tests (up from 659 in 0.12.2)

0.12.2

Choose a tag to compare

@ChrisRomp ChrisRomp released this 31 Mar 18:27
f12d91a

Upgrade Notice

Re-run install-service after updating to apply the new launchd plist and remove the old newsyslog configuration:

copilot-bridge install-service    # npm package
npm run install-service            # from source

Without this, the old plist will continue redirecting stdout to a file that newsyslog rotates out from under the bridge, causing log loss.

Self-Managed Log Rotation

The bridge now handles its own log rotation instead of relying on macOS newsyslog/launchd. This fixes the long-standing issue where newsyslog would rotate the file out from under the bridge's stdout redirect, causing all subsequent logs to be lost.

  • Logs are written synchronously via file descriptor for durability
  • Configurable rotation size, max files, and compression via config.json
  • Old rotated files are automatically compressed with gzip
  • install-service removes leftover newsyslog configs automatically
  • Permissions set to 0600 on log files

Configure in config.json:

{
  "logging": {
    "maxSize": "10MB",
    "maxFiles": 5,
    "compress": true
  }
}

Closes #168.

Dependency Updates

  • ws 8.19.0 -> 8.20.0
  • cronstrue 3.13.0 -> 3.14.0
  • vitest 4.1.0 -> 4.1.1
  • picomatch 4.0.3 -> 4.0.4

Note: TypeScript 6.0.2 was skipped due to @mattermost/client peer dependency constraint (^4.3.0 || ^5.0.0).

Other

  • Logger rotation tests now use deterministic awaits instead of sleeps (#172)

0.12.1

Choose a tag to compare

@ChrisRomp ChrisRomp released this 26 Mar 16:23
07f4795

OpenTelemetry Trace Collection

Added configurable OpenTelemetry trace export. The Copilot CLI's built-in OTel instrumentation exports spans following the GenAI semantic conventions -- model calls with token counts, tool execution timing, and session lifecycle -- to any OTLP HTTP endpoint. See the SDK OTel documentation for details on the underlying instrumentation.

Features

  • Telemetry config -- new telemetry section in config.json with otlpEndpoint, sourceName, captureContent, and authEnv fields. (#151)
  • Auth support -- authEnv resolves credentials from workspace .env files, scoped to the CLI subprocess only (not leaked to hooks or other child processes).
  • Documentation -- new telemetry topic in the fetch_copilot_bridge_documentation tool with config reference, auth setup, and trace details.
  • Config reload detection -- telemetry changes are flagged as restart-required during /reload config.

Compatible Collectors

Tested with OpenObserve. Also compatible with Jaeger, Grafana Tempo, and any OTLP HTTP endpoint.

0.12.0

Choose a tag to compare

@ChrisRomp ChrisRomp released this 25 Mar 04:50
30bd3c8

SDK v0.2.0 Upgrade

Upgraded from @github/copilot-sdk 0.1.32 to 0.2.0, unlocking system prompt customization and new RPC APIs.

System prompt customization

Bridge-specific instructions (channel communication, slash command awareness, .env safety, no_reply convention) are now injected via the SDK's systemMessage.customize API instead of being baked into AGENTS.md templates. This slims agent templates by ~86 lines and means updates no longer require re-onboarding workspaces.

no_reply tool

Replaces the text-based NO_REPLY convention. The agent calls a proper tool when it has nothing to say, eliminating the visible message flicker in chat. Works in both quiet mode (cron jobs) and normal conversations.

Hot-reload commands

New slash commands that use SDK RPCs instead of destroying and recreating the session:

  • /reload mcp -- reload MCP servers
  • /reload skills -- reload skills
  • /skills enable|disable -- now takes effect instantly (no more "Use /reload to apply")
  • /reasoning -- changes reasoning effort via setModel() RPC

All fall back to full session reload if no active session exists.

Startup optimization

Removed the startup nudge system that sent an LLM message to every admin channel on restart. Sessions now resume lazily on first user message.

Other improvements

  • skipPermission on bridge custom tools (read-only and workspace-bounded tools skip the interactive permission prompt)
  • Agent pre-selection via SessionConfig.agent on session create/resume
  • Session retry resilience for stale sessions on RPC commands (#139)
  • Scoped error suppression for the SDK's post-tool second-turn failure

0.11.0

Choose a tag to compare

@ChrisRomp ChrisRomp released this 23 Mar 20:33

BYOK Provider Support (Experimental)

Connect your own model providers alongside GitHub Copilot models. Supports OpenAI-compatible APIs, Azure OpenAI, Anthropic, Ollama, vLLM, and any OpenAI-compatible endpoint. Built on the Copilot SDK's BYOK support.

Features

  • BYOK providers -- Configure external model providers under "providers" in config.json. Switch between Copilot and BYOK models with /model provider:model-id. (#131, #132)
  • /provider commands -- /provider lists configured providers with auth and model details. /provider test <name> checks connectivity and model availability. (#135)
  • Model-level wireApi override -- Mix models that need different wire protocols ("completions" vs "responses") on the same provider. Codex models can use "responses" while others default to "completions". (#135)
  • Provider-aware model resolution -- Bare model names resolve Copilot-first, then BYOK. Provider-prefixed names (e.g., ollama:qwen3:8b) target the provider directly. (#132)
  • Admin agent provider management -- Admin bots get guided help for adding/removing providers via /provider add. (#135)
  • /help providers -- New bridge docs topic covering BYOK config, commands, and troubleshooting. (#135)

Fixes

  • Quiet mode -- Fixed nudge response timing to hold quiet mode open during the nudge cycle. (#129, #130)
  • Model listing -- Current model indicator no longer doubles up when a BYOK model shares a name with a Copilot model. (#135)
  • BYOK error messages -- Provider-specific error wrapping (unreachable, auth failure, model not found) only triggers when the provider actually resolved, preventing misattribution of Copilot errors. (#135)
  • Reasoning effort display -- Suppressed for BYOK models that don't carry reasoning metadata, preventing inherited Copilot model capabilities from showing incorrectly. (#137)
  • Same-provider model switch -- Detects per-model wireApi changes and forces a new session when needed. (#135)

Documentation

  • New docs/byok.md -- Full BYOK setup guide with provider examples (Ollama, Azure, Anthropic), wire API compatibility, model resolution, troubleshooting.
  • Azure troubleshooting -- SDK URL construction patterns, common 404 causes, auth header differences by provider type.
  • Updated config.sample.json with Azure model-level wireApi example.

Known Limitations

  • /provider test uses OpenAI-compatible /models endpoint; may 404 on Azure (#136)
  • Reasoning effort passthrough to BYOK providers is unverified; display is suppressed until confirmed
  • BYOK models are excluded from automatic fallback chains unless explicitly added to fallbackModels