Releases: github/gh-aw-mcpg
v0.2.23
🌟 Release Highlights
This release delivers a targeted bug fix for DIFC proxy GraphQL endpoint routing, along with internal quality improvements to tests and debug logging.
🐛 Bug Fixes
- DIFC proxy GraphQL endpoint rewriting: Fixed incorrect endpoint rewriting for the
github.comAPI base URL when using DIFC proxy mode. Requests to GraphQL endpoints are now correctly routed, resolving an edge case that could cause API calls to fail for standard GitHub.com configurations. (#4030)
🔧 Internal Improvements
- Improved debug logging for API key generation to aid in troubleshooting authentication flows (#4002)
- Expanded test coverage for
AllowOnlyPolicyconfiguration parsing and scope normalization (#4012) - Enhanced test coverage for the
mcp/tool_resultpackage (#4011)
🐳 Docker Image
The Docker image for this release is available at:
docker pull ghcr.io/github/gh-aw-mcpg:v0.2.23
# or
docker pull ghcr.io/github/gh-aw-mcpg:latestSupported platforms: linux/amd64, linux/arm64
For complete details, see the full release notes.
Generated by Release · ● 143.6K
What's Changed
- Repo Assist: require explicit
noopsafe output when no action is taken by @Copilot in #4026 - Fix DIFC proxy GraphQL endpoint rewriting for github.com API base by @Copilot in #4030
- [log] Add debug logging to GenerateRandomAPIKey in auth/apikey.go by @github-actions[bot] in #4002
- [test-improver] Improve tests for mcp/tool_result package by @github-actions[bot] in #4011
- [test] Add tests for config.AllowOnlyPolicy.UnmarshalJSON and NormalizeScopeKind by @github-actions[bot] in #4012
Full Changelog: v0.2.22...v0.2.23
v0.2.22
🌟 Release Highlights
This release focuses on reliability improvements for non-root container deployments and GHES compatibility, along with a documentation accuracy fix for the server tools allowlist feature.
🐛 Bug Fixes & Improvements
-
Non-root container support — MCP Gateway can now run as a non-privileged user (e.g., via
--user $(id -u):$(id -g)in Docker). Previously, a failure to write/etc/hostswould abort startup; it is now treated as a non-fatal warning, enabling secure, rootless container deployments. (#3985) -
GHES GraphQL routing fixed — GraphQL requests routed through the DIFC proxy to GitHub Enterprise Server instances with an
/api/v3base path were being forwarded to an invalid endpoint. Requests such as/api/graphqlfrom theghCLI are now correctly rewritten to<host>/api/graphql, ensuring end-to-end query preservation for GHES users. (#3970)
📚 Documentation
toolsfield docs corrected — The Configuration Reference previously stated that the servertoolsfield was unenforced. This has been corrected to reflect the actual runtime behavior: tools are filtered fromtools/listresponses andtools/callrequests are denied for any tool not in the allowlist. (#3965)
🐳 Docker Image
The Docker image for this release is available at:
docker pull ghcr.io/github/gh-aw-mcpg:v0.2.22
# or
docker pull ghcr.io/github/gh-aw-mcpg:latestSupported platforms: linux/amd64, linux/arm64
For complete details, see the full release notes.
Generated by Release · ● 147.8K
What's Changed
- Correct
toolsfield documentation to match runtime allowlist enforcement by @Copilot in #3965 - Refactor MCP connection response logging and timeout default handling to remove duplication by @Copilot in #3966
- [rust-guard] Deduplicate granular repo-write tool labeling and avoid repeated path scans in file secrecy checks by @Copilot in #3967
- Refactor URL derivation and helper ownership across envutil/config/mcp by @Copilot in #3968
- Fix GHES GraphQL path handling and end-to-end query preservation in DIFC proxy when upstream is
/api/v3by @Copilot in #3970 - Make /etc/hosts write non-fatal for non-root container execution by @lpcox in #3985
Full Changelog: v0.2.21...v0.2.22
v0.2.21
🌟 Release Highlights
This release focuses on timeout correctness for HTTP backends and MCP connection handling — ensuring gateway-configured execution budgets are respected end-to-end.
🐛 Bug Fixes & Improvements
-
HTTP backend timeouts now honor configured budgets (#3911): A hardcoded 120-second transport-level cap was silently overriding any tool execution budget set in the gateway config. HTTP backends now correctly respect the configured timeout, preventing unexpected truncations on long-running tools.
-
MCP connect timeout uses consistent default (#3946): The 30-second hardcoded connect timeout was replaced with a named
defaultConnectTimeoutconstant, and an invalid<= 0guard was fixed. This makes timeout behavior predictable and easier to reason about.
🐳 Docker Image
The Docker image for this release is available at:
docker pull ghcr.io/github/gh-aw-mcpg:v0.2.21
# or
docker pull ghcr.io/github/gh-aw-mcpg:latestSupported platforms: linux/amd64, linux/arm64
For complete details, see the full release notes.
Generated by Release · ● 110.3K
What's Changed
- Honor gateway tool execution budgets for HTTP backends by removing hardcoded 120s transport cap by @Copilot in #3911
- [test-improver] Improve tests for tracing package by @github-actions[bot] in #3938
- [test] Add tests for oidc.extractJWTExpiry by @github-actions[bot] in #3939
- [Repo Assist] fix(mcp): replace hardcoded 30s with defaultConnectTimeout constant, fix <= 0 guard by @github-actions[bot] in #3946
- Fix gofmt alignment in jwt_expiry_test.go by @lpcox in #3954
- Fix TestFullDIFCConfigFromJSON timeout waiting for backend connections by @lpcox in #3960
- [Repo Assist] test(mcp): add connect-timeout default behaviour tests by @github-actions[bot] in #3947
Full Changelog: v0.2.20...v0.2.21
v0.2.20
🌟 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_toolsetDIFC 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_TOKENdocumented 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:latestSupported 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
🌟 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_infoJSON parse in theget_file_contentsarm 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_floorand an unusedMEDIUM_BUFFER_SIZEre-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:latestSupported 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
🌟 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): Configureallowed-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.
-
WriteJSONResponsetrailing newline eliminated (#3466): JSON responses now usejson.Marshalinstead 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_intervalandopentelemetryconfig 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:latestSupported 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_strby @Copilot in #3654 - Add DIFC labeling rule for
create_pull_request_with_copilotby @Copilot in #3651 - refactor: deduplicate reconnect telemetry and SSE deprecation logging in connection.go by @Copilot in...
v0.2.17
🌟 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
authorAssociationinjection fix (#3413) — Resolved incorrect field injection intoUser-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()witheq_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:latestSupported 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
🌟 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/callenforcement: 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 aWARNlog is emitted.tools/listdefense-in-depth: Non-allowed tools are filtered out during backend registration — they never appear intools/listresponses 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:latestSupported 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
🌟 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_repositoriescalls, ensuring searches with special characters return correct results. - Config wiring fix (#3281):
payloadSizeThresholdis now correctly applied when using JSON stdin configuration. ThekeepaliveIntervalfield was also added to the config schema.
⚡ Reliability
- Bounded tool cache (#3231): The
filteredServerCachenow has a size cap to prevent unbounded memory growth during long-running sessions.ParseToolArgumentswas standardized across the SDK and theAddToolbypass path was deduplicated. - Pagination guard (#3289): Added a page-limit guard to
paginateAllto prevent runaway pagination from consuming excessive resources. - rust-guard performance (#3290): Removed dead code and eliminated unnecessary
format!allocations in the security guard'scheck_file_secrecypath.
📚 Documentation
- OpenTelemetry environment variables (#3232): The
test-raceMake target and all OpenTelemetry-related environment variables are now documented. Seedocs/ENVIRONMENT_VARIABLES.mdfor the full reference. - Tracing architecture (#3288):
CONTRIBUTING.mdnow covers theinternal/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:latestSupported 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+ eliminateformat!allocation incheck_file_secrecyby @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
🌟 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 theopentelemetryTOML 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 defaultMCP_GATEWAY_SESSION_TIMEOUTfor unified/mcpsessions 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:latestSupported 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