Skip to content

Releases: github/gh-aw-mcpg

v0.2.20

15 Apr 18:38
85562b1

Choose a tag to compare

🌟 Release Highlights

This release focuses on reliability, security, and observability β€” introducing a rate-limit circuit breaker for backend resilience, expanded guard coverage for MCP tool mutations, and improved OpenTelemetry tracing.

✨ What's New

  • πŸ”Œ Rate-Limit Circuit Breaker (#3799) β€” MCP Gateway now automatically trips a circuit breaker when GitHub MCP backend tool calls encounter rate limits. This prevents cascading failures and ensures smoother degradation under load, with automatic recovery when the upstream rate limit resets.

  • πŸ“‘ Enhanced OpenTelemetry Tracing (#3857) β€” OTel spans now include richer resource attributes, standardized HTTP semconv attributes (method, path, status code), and cached tracer lookups β€” giving you better observability into request flows with less overhead.

  • πŸ›‘οΈ Expanded Guard Coverage (#3860) β€” 21 granular GitHub MCP server mutation tools are now classified with precise DIFC labels, improving security posture for deployments using tool-level access controls. Deprecated tool aliases and enable_toolset DIFC rules are also now properly enforced (#3762).

  • πŸ” Collaborator Permission Fallback (#3831) β€” Response-level integrity functions now fall back to collaborator permissions when direct permission data is unavailable, ensuring more accurate integrity labeling across a broader range of repository access patterns.

πŸ› Bug Fixes & Improvements

  • HTTP backend connect timeout increased to 30s (#3782) β€” The default connect timeout for HTTP backends has been raised from 5s to 30s and is now configurable, reducing spurious timeouts for slow-starting backend servers.

  • ValidatorClient pagination & LRU cache fix (#3789) β€” Fixed pagination handling in ValidatorClient and corrected LRU eviction behavior in filteredServerCache, preventing stale tool-list entries from affecting guard evaluation.

  • WASM guard shutdown leak fixed (#3790) β€” Resolved a resource leak in wazero guard shutdown, fixed logging namespace alignment, and improved typed trap detection for more reliable guard lifecycle management.

πŸ“š Documentation

  • GITHUB_MCP_SERVER_TOKEN documented with correct priority order (#3761) β€” The token resolution order (GITHUB_MCP_SERVER_TOKEN β†’ GITHUB_TOKEN β†’ GITHUB_PERSONAL_ACCESS_TOKEN β†’ GH_TOKEN) is now accurately documented. See the Environment Variables guide for details.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.20
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release Β· ● 161.4K


What's Changed

  • [log] Add debug logging to config_env.go gateway env functions by @github-actions[bot] in #3630
  • [test-improver] Improve tests for strutil.RandomHex by @github-actions[bot] in #3636
  • [test] Add tests for config.validateGatewayConfig and validateTrustedBots by @github-actions[bot] in #3637
  • [log] Add debug logging to GitHub token/URL resolution in envutil by @github-actions[bot] in #3684
  • [test-improver] Improve tests for httputil package by @github-actions[bot] in #3693
  • [test] Add tests for cmd.registerAllFlags, registerFlagCompletions, and OTLP flag defaults by @github-actions[bot] in #3694
  • [log] Add debug logging to guard policy JSON unmarshaling by @github-actions[bot] in #3733
  • [test-improver] Improve tests for logger startup package by @github-actions[bot] in #3742
  • [Repo Assist] refactor: replace inline truncation with strutil/sanitize utilities by @github-actions[bot] in #3750
  • docs: document GITHUB_MCP_SERVER_TOKEN and fix token priority order by @lpcox in #3761
  • fix(guard): cover deprecated tool aliases, enable_toolset DIFC rule, and pre-emptive CLI entries by @lpcox in #3762
  • refactor(config): extract shared validateServerAuth to deduplicate auth validation by @lpcox in #3764
  • refactor: deduplicate logger mutex and withLock via lockable embedding by @lpcox in #3766
  • logger: address CloseAllLoggers review comments β€” doc fix + tests by @Copilot in #3770
  • Add stdin-path test coverage for stdio server auth validation by @Copilot in #3769
  • fix(guard): add enable_toolset DIFC unit test + backport coverage changes from #3762 by @Copilot in #3768
  • fix: update auth validation test assertions to match new error format by @lpcox in #3778
  • fix: increase HTTP backend connect timeout from 5s to 30s and make configurable by @lpcox in #3782
  • rust-guard: deduplicate search-query-fallback blocks and merge blocked-tool match arms by @Copilot in #3791
  • fix: ValidatorClient pagination, logger, and filteredServerCache LRU eviction by @Copilot in #3789
  • wazero: fix guard shutdown leak, logging namespace, and typed trap detection by @Copilot in #3790
  • Rate-limit circuit breaker for GitHub MCP backend tool calls by @Copilot in #3799
  • chore: upgrade gh-aw to v0.68.2 by @lpcox in #3811
  • πŸ”„ chore: update schema URL to v0.68.3 by @github-actions[bot] in #3842
  • [Repo Assist] refactor(mcp): extract logInboundRPCResponse helper in connection.go by @github-actions[bot] in #3847
  • fix: remove restrictive bash allowlist from go-logger workflow by @lpcox in #3864
  • docs: fix 4 documentation discrepancies from nightly reconciliation by @Copilot in #3859
  • feat(tracing): OTel resource enrichment, semconv HTTP attributes, cached tracers by @Copilot in #3857
  • rust-guard: merge duplicate search_issues/search_pull_requests arms; narrow labels pub use by @Copilot in #3858
  • fix: add github/gh-aw to log analyzer allowed-repos by @lpcox in #3866
  • Guard coverage: classify 21 granular github-mcp-server mutation tools by @Copilot in #3860
  • Add collaborator permission fallback to response-level integrity functions by @dsyme in #3831
  • [test] Add tests for cmd.newProxyCmd and cmd.detectGuardWasm by @github-actions[bot] in #3839
  • [test-improver] Improve tests for server/circuit_breaker by @github-actions[bot] in #3837
  • [log] log(envutil): add debug logging to env var parse fallbacks by @github-actions[bot] in #3825
  • fix: remove restrictive bash allowlist from test-improver workflow by @lpcox in #3887
  • refactor: extract logOutboundRPCRequest helper; complete flags.go env-var table by @Copilot in #3888
  • Enable cli-proxy in Copilot agent workflows to stop gh CLI bypassing MCP Gateway by @Copilot in #3893
  • refactor: eliminate three near-duplicate/outlier functions flagged by semantic analysis by @Copilot in #3897
  • refactor(cmd): inline trivial getDefault* env-wrapper functions by @Copilot in #3894

New Contributors

Full Changelog: v0.2.19...v0.2.20

v0.2.19

13 Apr 16:35
b950a22

Choose a tag to compare

🌟 Release Highlights

This release delivers a critical stability fix for the WASM security guard alongside internal code quality improvements that keep the codebase lean and efficient.

πŸ› Bug Fixes & Improvements

  • Critical: WASM guard session poisoning on multi-byte UTF-8 content (#3713) β€” The WASM guard could panic when a tool response preview contained multi-byte UTF-8 characters (CJK text, emoji, accented characters). A byte-index slice across a character boundary triggered a Rust panic that became a WASM trap, permanently poisoning the guard instance and causing all subsequent MCP calls to fail with "WASM guard is unavailable after a previous trap". Fixed by using str::floor_char_boundary() for safe UTF-8-aware truncation at all three preview sites. Discovered in a real-world workflow processing Chinese-language content.

πŸ”§ Internal Improvements

  • Reduced redundant WASM allocations (#3710) β€” Eliminated a duplicate extract_repo_info JSON parse in the get_file_contents arm of the Rust guard, matching the pattern used by every other arm and reducing unnecessary allocations in the WASM runtime.
  • Dead code removal (#3701) β€” Removed an unreachable match arm in collaborator_permission_floor and an unused MEDIUM_BUFFER_SIZE re-export, eliminating a lint suppression in the process.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.19
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release Β· ● 156.6K


What's Changed

  • [Repo Assist] fix(rust-guard): remove redundant match arm and unused MEDIUM_BUFFER_SIZE re-export by @github-actions[bot] in #3701
  • rust-guard: make LogLevel private and deduplicate extract_repo_info call by @Copilot in #3710
  • fix(guard): use UTF-8 safe string truncation in output preview logging by @lpcox in #3713

Full Changelog: v0.2.18...v0.2.19

v0.2.18

12 Apr 20:46
9e91827

Choose a tag to compare

🌟 Release Highlights

This release focuses on security hardening, improved observability, and code quality improvements β€” with a notable new DIFC integrity feature, more flexible tool filtering, and tighter spec compliance across the gateway.

✨ What's New

  • Maintainer reaction endorsement for integrity promotion/demotion (#3666): Maintainers can now explicitly endorse or demote content integrity via reactions, giving fine-grained control over DIFC labeling decisions. See the Guard Response Labeling docs for details.

  • Wildcard ["*"] support in allowed-tools filtering (#3445): Configure allowed-tools: ["*"] to permit all tools from a server without enumerating them individually β€” simplifying configs for permissive backends.

  • OIDC fail-fast validation for TOML configs (#3538): OIDC misconfiguration is now caught at startup for TOML-configured servers, preventing silent failures at request time.

  • DIFC labeling for create_pull_request_with_copilot (#3651): The Copilot PR creation tool now receives correct DIFC integrity labels, ensuring policy enforcement applies consistently.

  • Expanded guard coverage for CLI write operations (#3609): Three previously uncovered CLI write operations are now pre-emptively included in WRITE_OPERATIONS, closing potential gaps in write-op integrity classification.

πŸ› Bug Fixes & Improvements

  • Gateway timeout defaults aligned with spec Β§4.1.3 (#3592): Startup and tool timeout defaults now match spec-mandated values; example config and docs corrected to match (#3652).

  • HTTP connection errors now visible to operators (#3514): HTTP-level connection errors are logged to stderr, making network issues easier to diagnose in production.

  • WriteJSONResponse trailing newline eliminated (#3466): JSON responses now use json.Marshal instead of the encoder, removing an extraneous trailing newline that could affect downstream parsers.

  • gojq module security & compatibility fixes (#3451): Permissions, import collision, and module naming issues in the gojq dependency resolved, plus version upgrade.

  • go-sdk upgraded to v1.5.0 (#3610): Brings latest MCP SDK improvements and addresses items from go-fan review.

πŸ“š Documentation

  • keepalive_interval and opentelemetry config fields documented (#3457): Both fields are now covered in the Configuration docs with correct defaults and usage guidance.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.18
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release Β· ● 161.5K


What's Changed

  • πŸ”„ chore: update schema URL to v0.67.3 by @github-actions[bot] in #3430
  • [Repo Assist] refactor(proxy): use httputil.WriteJSONResponse for filtered/empty JSON writes by @github-actions[bot] in #3437
  • [Repo Assist] refactor(logger): add InitGatewayLoggers and InitProxyLoggers helpers by @github-actions[bot] in #3438
  • ci: add Rust guard unit tests to CI pipeline by @Copilot in #3396
  • chore: increase daily-compliance-checker timeout to 45 minutes by @lpcox in #3453
  • chore: increase nightly-docs-reconciler timeout to 45 minutes by @lpcox in #3456
  • docs: document keepalive_interval and opentelemetry config fields by @lpcox in #3457
  • Support wildcard ["*"] in allowed-tools filtering by @Copilot in #3445
  • Deduplicate auth scheme parsing and random hex generation by @Copilot in #3450
  • fix: gojq module review β€” permissions, collision, rename, upgrade by @Copilot in #3451
  • fix: use json.Marshal in WriteJSONResponse to avoid trailing newline by @lpcox in #3466
  • fix: restore method-style log prefix in listMCPItems by @Copilot in #3471
  • refactor: extract generic listMCPItems helper for list* MCP operations by @lpcox in #3470
  • chore: upgrade all workflows from v0.67.0 to v0.68.0 by @lpcox in #3504
  • Deduplicate error CallToolResult construction, GitHub token and API URL lookups by @Copilot in #3507
  • Fix: log HTTP connection errors to stderr for operator visibility by @Copilot in #3514
  • Consolidate dual logging in server package to internal logger by @Copilot in #3510
  • Fix integration tests broken by logging consolidation by @lpcox in #3516
  • Deduplicate startup logging in cmd/root.go via logger helpers by @Copilot in #3515
  • Consolidate duplicate container detection into sys.DetectContainerID by @Copilot in #3522
  • Deduplicate OIDC missing env-var error message into shared helper by @Copilot in #3526
  • go-sdk review: schema bypass canary test, ServerInfo logging, doc comments by @Copilot in #3531
  • Fix rust-guard-test: remove unused is_update_operation and is_create_operation by @Copilot in #3536
  • Reduce duplication in write-op integrity classification and MinIntegrity conversion by @Copilot in #3534
  • Add OIDC fail-fast validation to TOML config path by @Copilot in #3538
  • πŸ”„ Update schema URL to v0.68.1 by @github-actions[bot] in #3570
  • Disable threat-detection in all workflows by @lpcox in #3583
  • [Repo Assist] refactor: add strutil.TruncateRunes and remove lookupEnrichmentToken alias by @github-actions[bot] in #3574
  • Fix lint: update test for removed lookupEnrichmentToken by @lpcox in #3586
  • Rename TestLookupEnrichmentToken β†’ TestLookupGitHubToken and wire to envutil by @Copilot in #3587
  • fix: align gateway timeout defaults with spec Β§4.1.3 by @Copilot in #3592
  • [log] config: migrate logConfig from legacy log.New to project debug logger by @github-actions[bot] in #3372
  • [test-improver] Improve tests for config/validation_schema package by @github-actions[bot] in #3380
  • [test] Add tests for logger.SlogHandler.Handle and related functions by @github-actions[bot] in #3381
  • [log] Add debug logging to unified server utility functions by @github-actions[bot] in #3418
  • [test] Add tests for logger.ToolsLogger.writeToFile and LogToolsForServer by @github-actions[bot] in #3427
  • [test] Add tests for config.isDynamicTOMLPath and proxy.truncateForLog by @github-actions[bot] in #3500
  • [test-improver] Improve tests for envutil package by @github-actions[bot] in #3566
  • [test] Add tests for HTTPKeepaliveInterval, EnsureGatewayDefaults, SetDebug, and logger init functions by @github-actions[bot] in #3567
  • Add pre-emptive guard entries for 3 CLI write operations missing from WRITE_OPERATIONS by @Copilot in #3609
  • chore: upgrade go-sdk to v1.5.0 and address go-fan review items by @Copilot in #3610
  • [Repo Assist] fix: remove redundant log.Printf calls from connection.go by @github-actions[bot] in #3640
  • Fix incorrect default values in docs and example config for startup/tool timeouts and domain by @Copilot in #3652
  • fix(rust-guard): remove redundant match arm in author_association_floor_from_str by @Copilot in #3654
  • Add DIFC labeling rule for create_pull_request_with_copilot by @Copilot in #3651
  • refactor: deduplicate reconnect telemetry and SSE deprecation logging in connection.go by @Copilot in...
Read more

v0.2.17

09 Apr 14:39
46495a3

Choose a tag to compare

🌟 Release Highlights

This release brings container image flexibility, improved configuration validation, and several reliability fixes β€” making MCP Gateway more robust for production deployments.

✨ What's New

  • SHA-256 digest support in container image references (#3352) β€” Container images can now be pinned by digest (e.g., image@sha256:…), enabling immutable, verifiable deployments. This is especially valuable in security-sensitive environments where image tags alone are insufficient.

  • Fail-fast OIDC environment variable validation (#3367) β€” Invalid or missing OIDC configuration is now detected at startup rather than at runtime, surfacing misconfigurations immediately and preventing hard-to-diagnose failures later. See the Configuration Guide for details.

  • OTLP headers now accept string format per spec v1.13.0 (#3338) β€” OpenTelemetry header configuration is now fully compliant with OTLP spec v1.13.0, improving interoperability with observability backends.

πŸ› Bug Fixes & Improvements

  • GraphQL authorAssociation injection fix (#3413) β€” Resolved incorrect field injection into User-type nodes in GraphQL responses, preventing malformed responses. Also adds proper 503 logging when policy is missing.

  • Rust guard case-insensitive comparison fix (#3325) β€” Replaced to_lowercase() with eq_ignore_ascii_case() in the Rust guard for more correct and efficient string comparisons.

  • Proxy handler lint fixes (#3415) β€” Non-constant format strings in the proxy handler have been corrected, improving code correctness and eliminating potential formatting issues.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.17
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release Β· ● 107.4K


What's Changed

  • Update OTLP headers to accept string format (spec v1.13.0) by @Copilot in #3338
  • [Repo Assist] fix(rust-guard): replace to_lowercase() with eq_ignore_ascii_case, remove stale dead_code by @github-actions[bot] in #3325
  • [test] Add tests for server.peekRequestBody and config.isTransientHTTPError by @github-actions[bot] in #3317
  • [log] Add debug logging to GraphQL owner/repo and search query extraction by @github-actions[bot] in #3308
  • [test-improver] Improve tests for mcp/connection package by @github-actions[bot] in #3316
  • Allow SHA-256 digests in container image references by @Copilot in #3352
  • Fail-fast OIDC env var validation at config load time by @Copilot in #3367
  • πŸ”„ Update schema URL to v0.67.2 by @github-actions[bot] in #3384
  • Fix non-constant format string lint errors in proxy handler by @Copilot in #3415
  • Fix GraphQL authorAssociation injection into User-type nodes; log 503 on missing policy by @Copilot in #3413

Full Changelog: v0.2.16...v0.2.17

v0.2.16

07 Apr 17:52
2376065

Choose a tag to compare

🌟 Release Highlights

This release closes a security gap in allowed-tools enforcement and updates the schema validation baseline to gh-aw v0.67.1.

πŸ”’ Security Fix: Server-Side Allowed-Tools Enforcement

Previously, the tools allow-list in your server config was parsed but never enforced at runtime β€” a client with raw HTTP access could bypass it by sending tools/call requests directly for tools that should be restricted.

What changed:

  • tools/call enforcement: Blocked tools are now rejected with a descriptive error (IsError: true) before any backend request is made. A 403 OTEL span status is set and a WARN log is emitted.
  • tools/list defense-in-depth: Non-allowed tools are filtered out during backend registration β€” they never appear in tools/list responses and are never registered with the SDK server.
  • O(1) lookup: Allowed-tool sets are pre-computed at startup (buildAllowedToolSets), adding no per-request overhead.

No config changes required. When tools is absent or empty, all tools remain accessible β€” existing configurations are unaffected.

Example allow-list config:

{
  "mcpServers": {
    "github": {
      "type": "stdio",
      "container": "ghcr.io/github/github-mcp-server:latest",
      "tools": ["search_code", "get_file_contents", "list_issues"]
    }
  }
}

See the Configuration Guide for full server config options.

πŸ”§ Maintenance

  • Updated MCP Gateway JSON schema validation URL to gh-aw v0.67.1 for reproducible, deterministic configuration validation.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.16
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release Β· ● 150.6K


What's Changed

  • Gateway: enforce allowed-tools filtering server-side on tools/list and tools/call by @Copilot in #3334
  • Gateway: enforce allowed-tools filtering server-side on tools/list and tools/call by @Copilot in #3333
  • πŸ”„ chore: update schema URL to gh-aw v0.67.1 by @github-actions[bot] in #3318

Full Changelog: v0.2.15...v0.2.16

v0.2.15

06 Apr 17:57
8c39c72

Choose a tag to compare

🌟 Release Highlights

This release focuses on reliability and correctness β€” fixing critical build and configuration bugs, hardening the Go SDK layer, and improving documentation coverage for OpenTelemetry tracing.

πŸ› Bug Fixes & Improvements

  • Docker build fix (#3294): Resolved a "no space left on device" error that could cause Docker image builds to fail intermittently.
  • Search query encoding (#3235): Fixed URL encoding of query parameters in search_repositories calls, ensuring searches with special characters return correct results.
  • Config wiring fix (#3281): payloadSizeThreshold is now correctly applied when using JSON stdin configuration. The keepaliveInterval field was also added to the config schema.

⚑ Reliability

  • Bounded tool cache (#3231): The filteredServerCache now has a size cap to prevent unbounded memory growth during long-running sessions. ParseToolArguments was standardized across the SDK and the AddTool bypass path was deduplicated.
  • Pagination guard (#3289): Added a page-limit guard to paginateAll to prevent runaway pagination from consuming excessive resources.
  • rust-guard performance (#3290): Removed dead code and eliminated unnecessary format! allocations in the security guard's check_file_secrecy path.

πŸ“š Documentation

  • OpenTelemetry environment variables (#3232): The test-race Make target and all OpenTelemetry-related environment variables are now documented. See docs/ENVIRONMENT_VARIABLES.md for the full reference.
  • Tracing architecture (#3288): CONTRIBUTING.md now covers the internal/tracing/ package and OpenTelemetry integration patterns.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.15
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release Β· ● 147.2K


What's Changed

  • πŸ”„ chore: update schema URL to v0.67.0 by @github-actions[bot] in #3214
  • [Repo Assist] refactor(envutil): move ExpandEnvArgs from config to envutil by @github-actions[bot] in #3217
  • [test] Add tests for proxy.restBackendCaller.CallTool by @github-actions[bot] in #3213
  • [test-improver] Improve tests for server http_helpers package by @github-actions[bot] in #3212
  • [log] Add debug logging to tracing/http.go WrapHTTPHandler by @github-actions[bot] in #3206
  • [test] Add tests for logger.ServerFileLogger.Close by @github-actions[bot] in #3159
  • [test-improver] Improve tests for guard Registry.HasNonNoopGuard by @github-actions[bot] in #3158
  • [log] debug: add intermediate logging to GenerateSelfSignedTLS in proxy/tls.go by @github-actions[bot] in #3154
  • [test] Add tests for proxy.MatchRoute uncovered route patterns by @github-actions[bot] in #3115
  • [test-improver] Improve tests for logger common package by @github-actions[bot] in #3114
  • Fix search_repositories query parameter URL encoding by @lpcox in #3235
  • go-sdk: deduplicate AddTool bypass, standardize ParseToolArguments, cap filteredServerCache size by @Copilot in #3231
  • refactor: eliminate 3 duplicate code patterns across launcher and server packages by @Copilot in #3234
  • Document test-race Make target and OpenTelemetry env vars by @Copilot in #3232
  • Add PRIVATE_BASE constant and deduplicate GraphQL traversal in rust-guard by @Copilot in #3233
  • Upgrade workflows from gh-aw v0.65.3 to v0.67.0 by @lpcox in #3257
  • Update stale features.difc-proxy references in workflow prompts by @lpcox in #3260
  • [Repo Assist] fix(config): wire payloadSizeThreshold in JSON stdin + add keepaliveInterval to schema by @github-actions[bot] in #3281
  • [test] Add tests for proxy.deriveAPIFromServerURL and proxy.DeriveGitHubAPIURL by @github-actions[bot] in #3274
  • [test-improver] Improve tests for server hasServerGuardPolicies by @github-actions[bot] in #3273
  • [log] log: add debug logging to health monitor by @github-actions[bot] in #3265
  • docs: add internal/tracing/ and OpenTelemetry to CONTRIBUTING.md by @Copilot in #3288
  • go-sdk review: paginateAll page-limit guard, test server logger, handler convention docs by @Copilot in #3289
  • [rust-guard] Remove dead is_bot + eliminate format! allocation in check_file_secrecy by @Copilot in #3290
  • fix: Docker build fails with no space left on device by @lpcox in #3294

Full Changelog: v0.2.14...v0.2.15

v0.2.14

05 Apr 04:10
b25e549

Choose a tag to compare

🌟 Release Highlights

This release brings observability improvements with spec-compliant OpenTelemetry tracing and a longer default session timeout for better user experience in long-running agentic workflows.

✨ What's New

  • OpenTelemetry OTLP Tracing (#3188)
    MCP Gateway now supports OpenTelemetry OTLP tracing as defined in spec Β§4.1.3.6 (v1.11.0). Configure a tracing endpoint via the opentelemetry TOML key to export distributed traces from MCP tool calls β€” ideal for monitoring agent workflows and diagnosing latency issues. See the Configuration Guide for setup details.

  • Extended Default Session Timeout (#3201)
    The default MCP_GATEWAY_SESSION_TIMEOUT for unified /mcp sessions has been raised from 2 hours to 6 hours, reducing unexpected session expiration in long-running agentic workflows without requiring manual configuration. See the Environment Variables reference to customize this value.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.14
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release


What's Changed

  • feat: Support spec v1.11.0 β€” OpenTelemetry OTLP tracing configuration (Β§4.1.3.6) by @Copilot in #3188
  • feat: raise default MCP_GATEWAY_SESSION_TIMEOUT from 2h to 6h by @Copilot in #3201

Full Changelog: v0.2.13...v0.2.14

v0.2.13

04 Apr 18:40
40083e5

Choose a tag to compare

🌟 Release Highlights

This release brings observability, configurable session management, and meaningful compliance and security improvements to MCP Gateway.

✨ What's New

OpenTelemetry Tracing (#3178)
MCP Gateway now exports traces via OpenTelemetry OTLP, giving operators end-to-end visibility into request flows through the proxy and backend MCP servers. This makes it significantly easier to diagnose latency and pinpoint failures in production environments.

Configurable Session Timeout (#3068, #3153)
The MCP_GATEWAY_SESSION_TIMEOUT environment variable now controls the session timeout for unified mode (/mcp) stateful sessions (default: 2h). Previously this was hardcoded. See the documentation for configuration details.

πŸ”’ Security & Compliance

  • Stricter auth validation (#3097): Malformed Authorization headers now correctly return HTTP 400. Unknown fields in TOML configuration are rejected at startup, and API keys are now randomly generated β€” closing several compliance gaps.
  • Direct API bypass detection (#3134): The integrity audit now detects when agents attempt to call GitHub APIs directly, bypassing the gateway's routing constraint. A reusable MCP routing constraint has been added to enforce correct traffic flow.
  • Expanded guard coverage (#3095, #3139): Five workflow run cancel/rerun operations are now guarded pre-emptively, and create_agent_task is correctly classified as a read-write blocked operation.

πŸ› Bug Fixes

  • Resolved duplicate test declarations in the server package that caused build failures (#3098).

πŸ“š Documentation

  • MCP_GATEWAY_SESSION_TIMEOUT is now fully documented, including supported duration formats and behavioral differences between routed and unified modes (#3153).

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.13
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release


What's Changed

  • [Repo Assist] feat(envutil): add GetEnvDuration + configurable MCP_GATEWAY_SESSION_TIMEOUT by @github-actions[bot] in #3068
  • [Repo Assist] refactor(proxy): extract writeDIFCForbidden helper by @github-actions[bot] in #3067
  • [log] refactor(difc): consolidate agent.go logging to use internal debug logger by @github-actions[bot] in #2982
  • [test-improver] Improve tests for server session package by @github-actions[bot] in #2989
  • [test-improver] Improve tests for logger/markdown_logger package by @github-actions[bot] in #3058
  • [test] Add tests for proxy.handleWithDIFC uncovered branches by @github-actions[bot] in #3059
  • Add pre-emptive guard coverage for 5 workflow run cancel/rerun operations by @Copilot in #3095
  • fix: resolve duplicate test declarations in server package by @lpcox in #3098
  • [log] Add debug logging to internal/difc/resource.go by @github-actions[bot] in #3099
  • [rust-guard] Move test-only function out of production code; add missing field_names constants by @Copilot in #3096
  • fix: compliance gaps β€” HTTP 400 for malformed auth headers, reject unknown TOML fields, random API key generation by @Copilot in #3097
  • πŸ”„ chore: update schema URL to v0.65.6 by @github-actions[bot] in #3118
  • [Repo Assist] refactor(server): move logRuntimeError from auth.go to http_helpers.go by @github-actions[bot] in #3119
  • W-1: Detect direct API bypass in integrity audit + add reusable MCP routing constraint by @Copilot in #3134
  • Guard coverage: classify create_agent_task as read-write and blocked by @Copilot in #3139
  • πŸ”„ chore: update schema URL to v0.66.1 by @github-actions[bot] in #3162
  • feat: OpenTelemetry OTLP trace export from MCP Gateway and proxy by @Copilot in #3178
  • [Repo Assist] refactor(auth): move generateRandomAPIKey to internal/auth package by @github-actions[bot] in #3163
  • [Repo Assist] build: add test-race Makefile target for race condition detection by @github-actions[bot] in #3164
  • docs: document MCP_GATEWAY_SESSION_TIMEOUT environment variable by @Copilot in #3153

Full Changelog: v0.2.12...v0.2.13

v0.2.12

03 Apr 03:56
ffd3b1b

Choose a tag to compare

🌟 Release Highlights

This release focuses on reliability and observability β€” introducing automated health monitoring for backend MCP servers, improved documentation, and several quality-of-life fixes.

✨ What's New

  • Periodic Health Monitoring & Auto-Restart (#3022): MCP Gateway now continuously monitors backend MCP servers and automatically restarts them if they become unhealthy (per spec Β§8). This means fewer manual interventions when a backend server crashes or hangs β€” the gateway recovers on its own.

πŸ› Bug Fixes & Improvements

  • Session Expiry During Long-Running Tasks (#3079): Fixed an issue where safeoutputs sessions could expire during extended agent task executions, causing failures near the end of long operations.
  • Firewall/API-Proxy Image Alignment (#3012): Corrected a version mismatch where firewall agent and API-proxy container images were pinned to an outdated version (0.25.6), ensuring consistent behavior across all gateway components.
  • jq Middleware Improvements (#3026): Internal improvements to the jq payload processing middleware following a module review β€” improves correctness and maintainability of large payload handling.

πŸ“š Documentation

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.12
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release


What's Changed

  • chore: Upgrade agentic workflows to gh-aw v0.65.3 by @lpcox in #3007
  • fix: align firewall agent/api-proxy images to 0.25.6 by @lpcox in #3012
  • πŸ”„ chore: update schema URL to v0.65.2 by @github-actions[bot] in #2991
  • [Repo Assist] refactor(server): remove writeJSONResponse passthrough wrapper by @github-actions[bot] in #3001
  • docs: document OIDC auth for HTTP servers and advanced CLI flags by @lpcox in #3017
  • refactor: deduplicate search scope and author integrity in tool_rules.rs by @lpcox in #3019
  • feat: periodic health monitoring and auto-restart for backend servers (spec Β§8) by @lpcox in #3022
  • refactor: jq middleware improvements from gojq module review by @lpcox in #3026
  • refactor: remove redundant config default fallbacks in server and launcher by @lpcox in #3032
  • fix: prevent safeoutputs session expiry during long-running agent tasks by @Copilot in #3079
  • πŸ”„ chore: update schema URL to v0.65.5 by @github-actions[bot] in #3060

Full Changelog: v0.2.11...v0.2.12

v0.2.11

01 Apr 04:12
1631b99

Choose a tag to compare

🌟 Release Highlights

This release focuses on reliability and performance improvements, including accurate health monitoring, faster WASM guard startup, and a self-contained config schema β€” plus an expanded test suite and numerous internal code quality improvements.

✨ What's New

  • Embedded config schema (#2933): The MCP Gateway config JSON schema is now bundled directly into the binary via go:embed, eliminating the dependency on the external schema URL. No internet access needed to validate your configuration.

  • Debug logging for HTTP transport (#2906): Added a debug logger to the MCP HTTP transport layer, making it easier to trace request/response flows when troubleshooting backend connectivity issues.

πŸ› Bug Fixes & Improvements

  • Accurate health endpoint (#2938): The /health endpoint now reports real server status and uptime rather than stale or approximate values β€” health checks and monitoring tools will reflect the true state of backend MCP servers.

⚑ Performance

  • WASM guard startup time reduced (#2956): Added a wazero compilation cache for WASM security guards. Subsequent guard loads reuse compiled artifacts, significantly reducing startup overhead for deployments using WASM-based guards.

πŸ“š Documentation

  • Updated CONTRIBUTING.md (#2957): Added missing internal packages (proxy, difc, syncutil) and documented proxy mode to help contributors navigate the codebase.

🐳 Docker Image

The Docker image for this release is available at:

docker pull ghcr.io/github/gh-aw-mcpg:v0.2.11
# or
docker pull ghcr.io/github/gh-aw-mcpg:latest

Supported platforms: linux/amd64, linux/arm64


For complete details, see the full release notes.

Generated by Release


What's Changed

  • πŸ”„ chore: update schema URL to v0.65.0 by @github-actions[bot] in #2919
  • Bundle MCP gateway config schema in binary via go:embed by @Copilot in #2933
  • [Repo Assist] test(server): add direct unit tests for SessionIDFromContext and NewSession by @github-actions[bot] in #2893
  • [log] mcp: add debug logger to http_transport.go by @github-actions[bot] in #2906
  • [test-improver] Improve tests for logger/jsonl_logger package by @github-actions[bot] in #2915
  • [test] Add tests for proxy.ServeHTTP, handleWithDIFC, passthrough, and forwardAndReadBody by @github-actions[bot] in #2916
  • [Repo Assist] refactor(logger): eliminate withLock duplication across 4 logger types by @github-actions[bot] in #2920
  • fix: track real server status and uptime in health endpoint by @Copilot in #2938
  • refactor: deduplicate withLock() across logger types by @Copilot in #2939
  • refactor: eliminate duplicate code patterns (logger + server) by @lpcox in #2950
  • perf: add wazero compilation cache and wasm guard improvements by @lpcox in #2956
  • docs: add missing packages and proxy mode to CONTRIBUTING.md by @lpcox in #2957
  • refactor: Deduplicate integrity label builders in Rust guard by @lpcox in #2963
  • refactor: Go SDK usage improvements from module review by @lpcox in #2967

Full Changelog: v0.2.10...v0.2.11