Skip to content

docker scout fixes - #3900

Merged
akshaydeo merged 1 commit into
devfrom
05-30-docker_scout_fixes
May 30, 2026
Merged

docker scout fixes#3900
akshaydeo merged 1 commit into
devfrom
05-30-docker_scout_fixes

Conversation

@akshaydeo

@akshaydeo akshaydeo commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Bumps all golang.org/x standard library dependencies to their latest versions across every module in the repository, and updates github.com/maximhq/bifrost/core and github.com/maximhq/bifrost/framework to their latest tagged releases in the transports module.

Changes

  • golang.org/x/term: v0.41.0v0.43.0 (cli)
  • golang.org/x/sys: v0.42.0v0.45.0 (all modules)
  • golang.org/x/text: v0.35.0v0.37.0 (all modules)
  • golang.org/x/crypto: v0.49.0v0.52.0 (all modules)
  • golang.org/x/net: v0.52.0v0.55.0 (all modules)
  • github.com/maximhq/bifrost/core: v1.5.13v1.5.14 (transports)
  • github.com/maximhq/bifrost/framework: v1.3.13v1.3.14 (transports)
  • Several AWS SDK v2 packages and other transitive dependencies in tests/scripts/1millogs were also bumped to align with the updated core version, pulling in new transitive dependencies including OpenTelemetry, GCP, and gRPC-related packages.

Type of change

  • Bug fix
  • Feature
  • Refactor
  • Documentation
  • Chore/CI

Affected areas

  • Core (Go)
  • Transports (HTTP)
  • Providers/Integrations
  • Plugins
  • UI (React)
  • Docs

How to test

go test ./...

Breaking changes

  • Yes
  • No

Security considerations

golang.org/x/crypto and golang.org/x/net were both bumped to newer patch releases, which may include security fixes for cryptographic or HTTP-handling vulnerabilities. No API-breaking changes are expected.

Checklist

  • I read docs/contributing/README.md and followed the guidelines
  • I added/updated tests where appropriate
  • I updated documentation where needed
  • I verified builds succeed (Go and UI)
  • I verified the CI pipeline passes locally if applicable

Summary by CodeRabbit

  • Chores
    • Updated Go module dependencies across the project to latest stable versions, including security and maintenance updates for system libraries and cryptographic packages.

Review Change Stack

@akshaydeo
akshaydeo marked this pull request as ready for review May 29, 2026 21:16
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@akshaydeo
akshaydeo requested a review from a team as a code owner May 29, 2026 21:16

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

This PR upgrades golang.org/x library versions systematically across 14 go.mod files, advancing crypto, net, sys, and text to newer patch versions. Core modules, plugins, and test/transport dependencies are synchronized to maintain consistency throughout the codebase.

Changes

Go Module Dependency Upgrades

Layer / File(s) Summary
Foundation module dependencies: cli, core, framework
cli/go.mod, core/go.mod, framework/go.mod
Core modules receive golang.org/x library updates (crypto v0.49.0→v0.52.0, net v0.52.0→v0.55.0, sys v0.42.0→v0.45.0, text v0.35.0→v0.37.0). Additionally, cli/go.mod upgrades golang.org/x/term from v0.41.0 to v0.43.0.
Plugin ecosystem dependencies: 11 plugin modules
plugins/compat/go.mod, plugins/governance/go.mod, plugins/jsonparser/go.mod, plugins/logging/go.mod, plugins/maxim/go.mod, plugins/mocker/go.mod, plugins/otel/go.mod, plugins/prompts/go.mod, plugins/semanticcache/go.mod, plugins/telemetry/go.mod
All plugin modules consistently upgrade the golang.org/x library versions (crypto, net, sys, text) to align with foundation module updates, ensuring uniform dependency versions across the plugin ecosystem.
Test and transport layer dependencies
transports/go.mod, tests/scripts/1millogs/go.mod
Transport module bumps direct bifrost dependencies (core v1.5.13→v1.5.14, framework v1.3.13→v1.3.14) and updates golang.org/x libraries. Test script module performs a comprehensive refresh including AWS SDK, opentelemetry, google.golang.org packages alongside golang.org/x version bumps.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~4 minutes

Suggested reviewers

  • danpiths
  • Pratham-Mishra04

Poem

🐰 Hopping through the versions bright,
Golang libraries bundled tight,
Crypto, net, and text aligned,
A dependency dance, refined.
From plugins down to tests that hop,
No breaking changes—all systems top! 🎯

🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (3 warnings)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title 'docker scout fixes' does not align with the PR's actual content, which updates Go module dependencies and has nothing to do with Docker Scout. Use a more descriptive title that reflects the actual changes, such as 'Bump golang.org/x dependencies to latest versions' or 'Update Go module dependencies across all modules'.
Linked Issues check ⚠️ Warning The linked issue #123 requests Files API support for providers, but this PR only updates Go module dependencies with no Files API implementation present. This PR appears unrelated to issue #123. Either remove the issue link or ensure the PR includes the Files API implementation requested in the issue.
Out of Scope Changes check ⚠️ Warning The PR updates Go module dependencies across multiple modules, which is consistent with the stated objective of bumping golang.org/x dependencies, but there is a mismatch with the linked issue. The dependency updates are justified as a standalone change, but the link to issue #123 (Files API Support) represents an out-of-scope or incorrectly linked issue that should be removed or clarified.
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The PR description is comprehensive and well-structured, following the template with all major sections completed including Summary, Changes, Type of change, Affected areas, Testing, Breaking changes, and Security considerations.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 05-30-docker_scout_fixes

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps

greptile-apps Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

Confidence Score: 5/5

Safe to merge — contains only dependency version bumps with no functional code changes.

Every changed file is a go.mod or go.sum. The version targets are applied consistently across all 15 modules, hash values agree between modules, and no application or test logic is touched.

No files require special attention.

Important Files Changed

Filename Overview
core/go.mod Bumps golang.org/x/text, crypto, net, sys to newer patch versions; no code logic changes
framework/go.mod Bumps golang.org/x/crypto, net, sys, text to newer patch versions; consistent with other modules
cli/go.mod Bumps golang.org/x/term, sys, text; crypto and net are not CLI dependencies so are not updated here
transports/go.mod Bumps golang.org/x/crypto, net, sys, text consistently with the rest of the workspace
plugins/governance/go.mod Bumps golang.org/x/crypto, net, sys, text; matches the workspace-wide version targets

Reviews (1): Last reviewed commit: "docker scout fixes" | Re-trigger Greptile

@akshaydeo
akshaydeo merged commit 84e7b78 into dev May 30, 2026
14 of 15 checks passed
@akshaydeo
akshaydeo deleted the 05-30-docker_scout_fixes branch May 30, 2026 12:47
akshaydeo added a commit that referenced this pull request May 30, 2026
This was referenced May 30, 2026
akshaydeo added a commit that referenced this pull request May 30, 2026
## Summary

Remediates Docker Scout CVE findings by upgrading transitive `golang.org/x` dependencies and removing the standalone GNU `wget` package from Alpine runtime images, replacing it with the built-in busybox `wget` applet.

## Changes

- Bumped `golang.org/x` transitive dependencies (`crypto`, `net`, `sys`, `text`, `term`) across all modules to clear 20 Docker Scout advisories (severity up to 10.0), verified clean with `govulncheck`
- Removed standalone `wget` package from Alpine runtime images in `Dockerfile` and `Dockerfile.local`, eliminating CVE-2025-69194 (CVSS 8.8)
- Updated `HEALTHCHECK` command from `wget --no-verbose --tries=1` to `wget -q` to use busybox-compatible flags with no functional change in behavior

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

## Affected areas

- [x] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
# Verify no vulnerabilities remain
govulncheck ./...

# Build Docker image and confirm wget healthcheck works
docker build -f transports/Dockerfile -t gateway-test .
docker run --rm gateway-test
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Closes #3900

## Security considerations

- Clears 20 Docker Scout CVE advisories on `golang.org/x` packages, with severities up to 10.0
- Removes CVE-2025-69194 (CVSS 8.8) by eliminating the standalone GNU `wget` package; busybox `wget` is used instead and is not affected by this CVE

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable
akshaydeo added a commit that referenced this pull request May 30, 2026
* removes from_memory for APIs

* docker scout fixes (#3900)

* test fixes for hardened runners (#3780)

* fix: SGL provider - send Authorization header on streaming requests (#3307)

* [fix]: SGL provider - send Authorization header on streaming requests

The streaming entry points (ChatCompletionStream, TextCompletionStream)
passed nil for the authHeader parameter to the shared OpenAI streaming
helpers, so no Authorization header was attached to outbound streaming
requests. SGLang servers configured with --api-key always require the
header and returned 401 on streaming while non-streaming requests
worked. The non-streaming OpenAI helper takes the Key directly and
builds the header itself; the streaming helper requires the caller to
build it. Mirror the vLLM pattern (core/providers/vllm/vllm.go) and
construct the auth header from key.Value when set.

Affected packages:
- core/providers/sgl/sgl.go - build authHeader for both streaming paths
- core/providers/sgl/chat_test.go - regression tests asserting the
  Authorization header reaches the upstream on chat and text streams
- core/changelog.md - changelog entry

* [fix]: SGL streaming tests - cancel drain goroutine on test completion

The drain goroutines spawned to consume streamChan in
TestChatCompletionStream_SetsAuthorizationHeader and
TestTextCompletionStream_SetsAuthorizationHeader had no cancellation
path: if the streaming pipeline failed to close the channel (e.g. on a
test timeout), the goroutines would leak into the test process.

Replace the inline `go func() { for range streamChan {} }()` with a
shared drainStream helper that selects on both the channel and a `done`
channel closed via t.Cleanup, so the goroutine always exits when the
test completes regardless of channel state.

Addresses Greptile review feedback on PR #3307.

---------

Co-authored-by: Akshay Deo <akshay@akshaydeo.com>

* ollama streaming auth header (#3906)

## Summary

Adds Bearer token authentication support to the Ollama provider's streaming endpoints. Previously, the streaming methods for text completion and chat completion always passed `nil` for the auth header, meaning API keys configured for Ollama were silently ignored during streaming requests.

## Issues

Closes #3905

## Changes

- When a non-empty key value is present, a `Bearer` token `Authorization` header is now constructed and passed to the OpenAI-compatible streaming handlers for both `TextCompletionStream` and `ChatCompletionStream`
- If no key is configured, the auth header remains `nil`, preserving backward compatibility with unauthenticated local Ollama instances

## Type of change

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [ ] Transports (HTTP)
- [x] Providers/Integrations
- [ ] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

Configure an Ollama provider with an API key (e.g., when using a hosted or authenticated Ollama instance) and issue a streaming chat or text completion request. Verify the `Authorization: Bearer <key>` header is included in the outgoing request.

```sh
go test ./core/providers/ollama/...
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

## Security considerations

API keys are now correctly forwarded as Bearer tokens in streaming requests to Ollama. Ensure keys are stored and retrieved securely via the existing key management mechanism, as they will now be included in outbound HTTP headers for streaming calls.

## Checklist

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

* **Bug Fixes**
  * Ollama streaming requests now support authentication via bearer tokens for both text and chat completions, enabling proper token-based authentication when API keys are provided.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3906?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

* 1.5.7 changelogs (#3907)

This release (core v1.5.15, framework v1.3.15) fixes missing `Authorization` header forwarding on streaming requests for the Ollama and SGL providers, ensuring authenticated requests behave correctly during streaming.

- Ollama streaming text and chat completion requests now correctly forward the configured API key as an `Authorization: Bearer` header (#3906)
- SGL provider now sends the `Authorization` header on streaming requests (#3307) (thanks [@hensapir](https://github.com/hensapir)!)
- Governance and Logging APIs: removed the `from_memory` query parameter; virtual key and config list APIs now return consistent DB-backed results, with VK names batch-fetched in a single query (#3903)
- Bumped core to v1.5.15, framework to v1.3.15, transports to v1.5.7, and all dependent plugins to their respective patch versions

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

- [x] Core (Go)
- [x] Transports (HTTP)
- [x] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

Validate that Ollama and SGL streaming requests include the `Authorization: Bearer` header when an API key is configured.

```sh
go version
go test ./...
```

Configure an Ollama or SGL provider with an API key and issue a streaming chat or text completion request. Inspect outbound request headers to confirm `Authorization: Bearer <key>` is present.

- [ ] Yes
- [x] No

Closes #3906
Closes #3307
Closes #3903

These fixes ensure that API keys configured for Ollama and SGL providers are correctly forwarded on streaming requests. Previously, the `Authorization` header was silently dropped on streaming paths, meaning requests could reach upstream providers without authentication credentials.

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

* **Bug Fixes**
  * Fixed authorization header handling for Ollama streaming requests.
  * Fixed authorization header forwarding for SGL provider streaming requests.
  * Improved consistency in virtual key and configuration list API responses by removing unnecessary query parameters.

* **Chores**
  * Updated component versions across the platform.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3907?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

* changelogs (#3909)

## Summary

Remediates Docker Scout CVE findings by upgrading transitive `golang.org/x` dependencies and removing the standalone GNU `wget` package from Alpine runtime images, replacing it with the built-in busybox `wget` applet.

## Changes

- Bumped `golang.org/x` transitive dependencies (`crypto`, `net`, `sys`, `text`, `term`) across all modules to clear 20 Docker Scout advisories (severity up to 10.0), verified clean with `govulncheck`
- Removed standalone `wget` package from Alpine runtime images in `Dockerfile` and `Dockerfile.local`, eliminating CVE-2025-69194 (CVSS 8.8)
- Updated `HEALTHCHECK` command from `wget --no-verbose --tries=1` to `wget -q` to use busybox-compatible flags with no functional change in behavior

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

## Affected areas

- [x] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
# Verify no vulnerabilities remain
govulncheck ./...

# Build Docker image and confirm wget healthcheck works
docker build -f transports/Dockerfile -t gateway-test .
docker run --rm gateway-test
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Closes #3900

## Security considerations

- Clears 20 Docker Scout CVE advisories on `golang.org/x` packages, with severities up to 10.0
- Removes CVE-2025-69194 (CVSS 8.8) by eliminating the standalone GNU `wget` package; busybox `wget` is used instead and is not affected by this CVE

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable

---------

Co-authored-by: Hen Sapir <hen@sapir.me>
akshaydeo added a commit that referenced this pull request May 30, 2026
akshaydeo added a commit that referenced this pull request May 30, 2026
## Summary

Remediates Docker Scout CVE findings by upgrading transitive `golang.org/x` dependencies and removing the standalone GNU `wget` package from Alpine runtime images, replacing it with the built-in busybox `wget` applet.

## Changes

- Bumped `golang.org/x` transitive dependencies (`crypto`, `net`, `sys`, `text`, `term`) across all modules to clear 20 Docker Scout advisories (severity up to 10.0), verified clean with `govulncheck`
- Removed standalone `wget` package from Alpine runtime images in `Dockerfile` and `Dockerfile.local`, eliminating CVE-2025-69194 (CVSS 8.8)
- Updated `HEALTHCHECK` command from `wget --no-verbose --tries=1` to `wget -q` to use busybox-compatible flags with no functional change in behavior

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

## Affected areas

- [x] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
# Verify no vulnerabilities remain
govulncheck ./...

# Build Docker image and confirm wget healthcheck works
docker build -f transports/Dockerfile -t gateway-test .
docker run --rm gateway-test
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Closes #3900

## Security considerations

- Clears 20 Docker Scout CVE advisories on `golang.org/x` packages, with severities up to 10.0
- Removes CVE-2025-69194 (CVSS 8.8) by eliminating the standalone GNU `wget` package; busybox `wget` is used instead and is not affected by this CVE

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable
akshaydeo added a commit that referenced this pull request May 30, 2026
* docker scout fixes (#3900)

* 1.5.7 changelogs (#3907)

This release (core v1.5.15, framework v1.3.15) fixes missing `Authorization` header forwarding on streaming requests for the Ollama and SGL providers, ensuring authenticated requests behave correctly during streaming.

- Ollama streaming text and chat completion requests now correctly forward the configured API key as an `Authorization: Bearer` header (#3906)
- SGL provider now sends the `Authorization` header on streaming requests (#3307) (thanks [@hensapir](https://github.com/hensapir)!)
- Governance and Logging APIs: removed the `from_memory` query parameter; virtual key and config list APIs now return consistent DB-backed results, with VK names batch-fetched in a single query (#3903)
- Bumped core to v1.5.15, framework to v1.3.15, transports to v1.5.7, and all dependent plugins to their respective patch versions

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

- [x] Core (Go)
- [x] Transports (HTTP)
- [x] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

Validate that Ollama and SGL streaming requests include the `Authorization: Bearer` header when an API key is configured.

```sh
go version
go test ./...
```

Configure an Ollama or SGL provider with an API key and issue a streaming chat or text completion request. Inspect outbound request headers to confirm `Authorization: Bearer <key>` is present.

- [ ] Yes
- [x] No

Closes #3906
Closes #3307
Closes #3903

These fixes ensure that API keys configured for Ollama and SGL providers are correctly forwarded on streaming requests. Previously, the `Authorization` header was silently dropped on streaming paths, meaning requests could reach upstream providers without authentication credentials.

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

* **Bug Fixes**
  * Fixed authorization header handling for Ollama streaming requests.
  * Fixed authorization header forwarding for SGL provider streaming requests.
  * Improved consistency in virtual key and configuration list API responses by removing unnecessary query parameters.

* **Chores**
  * Updated component versions across the platform.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3907?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

* changelogs (#3909)

## Summary

Remediates Docker Scout CVE findings by upgrading transitive `golang.org/x` dependencies and removing the standalone GNU `wget` package from Alpine runtime images, replacing it with the built-in busybox `wget` applet.

## Changes

- Bumped `golang.org/x` transitive dependencies (`crypto`, `net`, `sys`, `text`, `term`) across all modules to clear 20 Docker Scout advisories (severity up to 10.0), verified clean with `govulncheck`
- Removed standalone `wget` package from Alpine runtime images in `Dockerfile` and `Dockerfile.local`, eliminating CVE-2025-69194 (CVSS 8.8)
- Updated `HEALTHCHECK` command from `wget --no-verbose --tries=1` to `wget -q` to use busybox-compatible flags with no functional change in behavior

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

## Affected areas

- [x] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
# Verify no vulnerabilities remain
govulncheck ./...

# Build Docker image and confirm wget healthcheck works
docker build -f transports/Dockerfile -t gateway-test .
docker run --rm gateway-test
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Closes #3900

## Security considerations

- Clears 20 Docker Scout CVE advisories on `golang.org/x` packages, with severities up to 10.0
- Removes CVE-2025-69194 (CVSS 8.8) by eliminating the standalone GNU `wget` package; busybox `wget` is used instead and is not affected by this CVE

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable

* enterprise changelog (#3912)

## Summary

Adds the Enterprise v1.4.6 changelog entry to the documentation site and registers it in the docs navigation.

## Changes

- Added `docs/changelogs/ent-v1.4.6.mdx` documenting the v1.4.6 release, which is a security and hardening release based on `transports/v1.5.7`. Key highlights include:
  - **DAC bypass fix**: `from_memory` query paths and shared filter-data caches were bypassing data-access scope enforcement, allowing scoped callers to observe virtual keys, teams, routing rules, and log dimensions belonging to other users. All read paths now apply the caller's DAC scope, and MCP clients no longer leak hidden virtual key IDs.
  - **DAC scope coverage expanded**: Added DAC wrappers for `GetVirtualKeys`, `GetRoutingRules`, `GetRoutingRulesByScope`, `GetRoutingRule`, and MCP virtual-key config lookups by client ID.
  - **DAC bypass regression suite**: New end-to-end Postman collection covering `from_memory` list endpoints, hidden virtual key/team detail access, log and MCP filter-data cache isolation, and MCP client assignment leakage.
  - **CVE remediation**: Updated `golang.org/x` packages (`crypto`, `net`, `sys`, `text`, `term`) clearing 20 advisories with severity up to 10.0, verified with `govulncheck`.
  - **Hardened container image**: Removed standalone GNU `wget` from the Alpine runtime image, eliminating CVE-2025-69194 (8.8); healthcheck now uses busybox `wget`.
  - **Ollama and SGL streaming auth fixes**: Both providers now correctly forward `Authorization: Bearer` headers on streaming requests.
  - **Governance model availability fix**: Access profile evaluation now correctly enforces model availability checks during budget constraint validation across managed and non-managed governance paths.
  - **Governance and Logging list API cleanup**: Removed the `from_memory` query parameter; list APIs now return consistent DB-backed results with batch-fetched virtual-key names.
- Registered `changelogs/ent-v1.4.6` as the first entry in the Enterprise changelogs section of `docs/docs.json`.

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [x] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [ ] Transports (HTTP)
- [ ] Providers/Integrations
- [ ] Plugins
- [ ] UI (React)
- [x] Docs

## How to test

Navigate to the Enterprise changelogs section of the documentation site and confirm that the v1.4.6 entry appears at the top of the list and renders correctly, including the breaking-change warning, feature/fix sections, and dependency tables.

## Breaking changes

- [x] Yes
- [ ] No

v1.4.0 introduced breaking changes. Upgraders should follow the [v1.4.0 Migration Guide](https://docs.example.com/enterprise/migration-guides/v1.4.0) before upgrading to v1.4.6.

## Security considerations

This release closes a DAC bypass that allowed scoped callers to read virtual keys, teams, routing rules, and log dimensions belonging to other users via `from_memory` query paths and shared filter-data caches. It also remediates 20 CVEs in `golang.org/x` dependencies (max severity 10.0) and removes a vulnerable `wget` binary (CVE-2025-69194, 8.8) from the container image.

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

## Documentation

* Added Enterprise v1.4.6 release notes documenting a security-focused release with hardening improvements and critical updates.
* Updates include security remediation, governance and model validation enhancements, container image improvements, and authentication updates for supported streaming services.
* Removed deprecated parameter from governance and logging APIs.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3912?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
akshaydeo pushed a commit that referenced this pull request May 31, 2026
…v1.5.13 (#3914)

## Summary

Resolves a merge conflict by pinning `github.com/maximhq/bifrost/plugins/mocker` to version `v1.5.13`, reverting an unintended bump to `v1.5.15` that was introduced during the merge.

## Changes

- Downgraded `github.com/maximhq/bifrost/plugins/mocker` from `v1.5.15` back to `v1.5.13` in both `go.mod` and `go.sum`
- Removed the leftover merge conflict markers that were present in `go.mod`

## Type of change

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
cd transports
go mod tidy
go build ./...
go test ./...
```

Verify that `go.mod` no longer contains conflict markers and that `github.com/maximhq/bifrost/plugins/mocker` is pinned at `v1.5.13`.

## Screenshots/Recordings

N/A

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Related to #3900

## Security considerations

No security implications.

## Checklist

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

* **Chores**
  * Updated internal dependency versions for maintenance.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3914?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
akshaydeo pushed a commit that referenced this pull request May 31, 2026
…v1.5.13 (#3914)

## Summary

Resolves a merge conflict by pinning `github.com/maximhq/bifrost/plugins/mocker` to version `v1.5.13`, reverting an unintended bump to `v1.5.15` that was introduced during the merge.

## Changes

- Downgraded `github.com/maximhq/bifrost/plugins/mocker` from `v1.5.15` back to `v1.5.13` in both `go.mod` and `go.sum`
- Removed the leftover merge conflict markers that were present in `go.mod`

## Type of change

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
cd transports
go mod tidy
go build ./...
go test ./...
```

Verify that `go.mod` no longer contains conflict markers and that `github.com/maximhq/bifrost/plugins/mocker` is pinned at `v1.5.13`.

## Screenshots/Recordings

N/A

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Related to #3900

## Security considerations

No security implications.

## Checklist

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

* **Chores**
  * Updated internal dependency versions for maintenance.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3914?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
akshaydeo pushed a commit that referenced this pull request May 31, 2026
…v1.5.13 (#3914)

Resolves a merge conflict by pinning `github.com/maximhq/bifrost/plugins/mocker` to version `v1.5.13`, reverting an unintended bump to `v1.5.15` that was introduced during the merge.

- Downgraded `github.com/maximhq/bifrost/plugins/mocker` from `v1.5.15` back to `v1.5.13` in both `go.mod` and `go.sum`
- Removed the leftover merge conflict markers that were present in `go.mod`

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

- [ ] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

```sh
cd transports
go mod tidy
go build ./...
go test ./...
```

Verify that `go.mod` no longer contains conflict markers and that `github.com/maximhq/bifrost/plugins/mocker` is pinned at `v1.5.13`.

N/A

- [ ] Yes
- [x] No

Related to #3900

No security implications.

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

* **Chores**
  * Updated internal dependency versions for maintenance.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3914?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
akshaydeo pushed a commit that referenced this pull request May 31, 2026
…v1.5.13 (#3914)

Resolves a merge conflict by pinning `github.com/maximhq/bifrost/plugins/mocker` to version `v1.5.13`, reverting an unintended bump to `v1.5.15` that was introduced during the merge.

- Downgraded `github.com/maximhq/bifrost/plugins/mocker` from `v1.5.15` back to `v1.5.13` in both `go.mod` and `go.sum`
- Removed the leftover merge conflict markers that were present in `go.mod`

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

- [ ] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

```sh
cd transports
go mod tidy
go build ./...
go test ./...
```

Verify that `go.mod` no longer contains conflict markers and that `github.com/maximhq/bifrost/plugins/mocker` is pinned at `v1.5.13`.

N/A

- [ ] Yes
- [x] No

Related to #3900

No security implications.

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

* **Chores**
  * Updated internal dependency versions for maintenance.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3914?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
akshaydeo pushed a commit that referenced this pull request May 31, 2026
…v1.5.13 (#3914)

Resolves a merge conflict by pinning `github.com/maximhq/bifrost/plugins/mocker` to version `v1.5.13`, reverting an unintended bump to `v1.5.15` that was introduced during the merge.

- Downgraded `github.com/maximhq/bifrost/plugins/mocker` from `v1.5.15` back to `v1.5.13` in both `go.mod` and `go.sum`
- Removed the leftover merge conflict markers that were present in `go.mod`

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

- [ ] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

```sh
cd transports
go mod tidy
go build ./...
go test ./...
```

Verify that `go.mod` no longer contains conflict markers and that `github.com/maximhq/bifrost/plugins/mocker` is pinned at `v1.5.13`.

N/A

- [ ] Yes
- [x] No

Related to #3900

No security implications.

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

* **Chores**
  * Updated internal dependency versions for maintenance.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3914?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Purvi09 pushed a commit to Purvi09/bifrost that referenced this pull request May 31, 2026
Purvi09 pushed a commit to Purvi09/bifrost that referenced this pull request May 31, 2026
## Summary

Remediates Docker Scout CVE findings by upgrading transitive `golang.org/x` dependencies and removing the standalone GNU `wget` package from Alpine runtime images, replacing it with the built-in busybox `wget` applet.

## Changes

- Bumped `golang.org/x` transitive dependencies (`crypto`, `net`, `sys`, `text`, `term`) across all modules to clear 20 Docker Scout advisories (severity up to 10.0), verified clean with `govulncheck`
- Removed standalone `wget` package from Alpine runtime images in `Dockerfile` and `Dockerfile.local`, eliminating CVE-2025-69194 (CVSS 8.8)
- Updated `HEALTHCHECK` command from `wget --no-verbose --tries=1` to `wget -q` to use busybox-compatible flags with no functional change in behavior

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

## Affected areas

- [x] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
# Verify no vulnerabilities remain
govulncheck ./...

# Build Docker image and confirm wget healthcheck works
docker build -f transports/Dockerfile -t gateway-test .
docker run --rm gateway-test
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Closes maximhq#3900

## Security considerations

- Clears 20 Docker Scout CVE advisories on `golang.org/x` packages, with severities up to 10.0
- Removes CVE-2025-69194 (CVSS 8.8) by eliminating the standalone GNU `wget` package; busybox `wget` is used instead and is not affected by this CVE

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable
Purvi09 pushed a commit to Purvi09/bifrost that referenced this pull request May 31, 2026
…v1.5.13 (maximhq#3914)

## Summary

Resolves a merge conflict by pinning `github.com/maximhq/bifrost/plugins/mocker` to version `v1.5.13`, reverting an unintended bump to `v1.5.15` that was introduced during the merge.

## Changes

- Downgraded `github.com/maximhq/bifrost/plugins/mocker` from `v1.5.15` back to `v1.5.13` in both `go.mod` and `go.sum`
- Removed the leftover merge conflict markers that were present in `go.mod`

## Type of change

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
cd transports
go mod tidy
go build ./...
go test ./...
```

Verify that `go.mod` no longer contains conflict markers and that `github.com/maximhq/bifrost/plugins/mocker` is pinned at `v1.5.13`.

## Screenshots/Recordings

N/A

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Related to maximhq#3900

## Security considerations

No security implications.

## Checklist

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

* **Chores**
  * Updated internal dependency versions for maintenance.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3914?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
chris-colinsky pushed a commit to chris-colinsky/bifrost that referenced this pull request May 31, 2026
Addresses review feedback — matches the existing entry format
(e.g. `(maximhq#3900)`) for traceability.

Changes:
- core/changelog.md - append (maximhq#3929) to the upstream connection
  failures entry.
Purvi09 pushed a commit to Purvi09/bifrost that referenced this pull request Jun 2, 2026
Purvi09 pushed a commit to Purvi09/bifrost that referenced this pull request Jun 2, 2026
## Summary

Remediates Docker Scout CVE findings by upgrading transitive `golang.org/x` dependencies and removing the standalone GNU `wget` package from Alpine runtime images, replacing it with the built-in busybox `wget` applet.

## Changes

- Bumped `golang.org/x` transitive dependencies (`crypto`, `net`, `sys`, `text`, `term`) across all modules to clear 20 Docker Scout advisories (severity up to 10.0), verified clean with `govulncheck`
- Removed standalone `wget` package from Alpine runtime images in `Dockerfile` and `Dockerfile.local`, eliminating CVE-2025-69194 (CVSS 8.8)
- Updated `HEALTHCHECK` command from `wget --no-verbose --tries=1` to `wget -q` to use busybox-compatible flags with no functional change in behavior

## Type of change

- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

## Affected areas

- [x] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
# Verify no vulnerabilities remain
govulncheck ./...

# Build Docker image and confirm wget healthcheck works
docker build -f transports/Dockerfile -t gateway-test .
docker run --rm gateway-test
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Closes maximhq#3900

## Security considerations

- Clears 20 Docker Scout CVE advisories on `golang.org/x` packages, with severities up to 10.0
- Removes CVE-2025-69194 (CVSS 8.8) by eliminating the standalone GNU `wget` package; busybox `wget` is used instead and is not affected by this CVE

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable
Purvi09 pushed a commit to Purvi09/bifrost that referenced this pull request Jun 2, 2026
…v1.5.13 (maximhq#3914)

## Summary

Resolves a merge conflict by pinning `github.com/maximhq/bifrost/plugins/mocker` to version `v1.5.13`, reverting an unintended bump to `v1.5.15` that was introduced during the merge.

## Changes

- Downgraded `github.com/maximhq/bifrost/plugins/mocker` from `v1.5.15` back to `v1.5.13` in both `go.mod` and `go.sum`
- Removed the leftover merge conflict markers that were present in `go.mod`

## Type of change

- [x] Bug fix
- [ ] Feature
- [ ] Refactor
- [ ] Documentation
- [ ] Chore/CI

## Affected areas

- [ ] Core (Go)
- [x] Transports (HTTP)
- [ ] Providers/Integrations
- [x] Plugins
- [ ] UI (React)
- [ ] Docs

## How to test

```sh
cd transports
go mod tidy
go build ./...
go test ./...
```

Verify that `go.mod` no longer contains conflict markers and that `github.com/maximhq/bifrost/plugins/mocker` is pinned at `v1.5.13`.

## Screenshots/Recordings

N/A

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

Related to maximhq#3900

## Security considerations

No security implications.

## Checklist

- [ ] I read `docs/contributing/README.md` and followed the guidelines
- [ ] I added/updated tests where appropriate
- [ ] I updated documentation where needed
- [ ] I verified builds succeed (Go and UI)
- [ ] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

* **Chores**
  * Updated internal dependency versions for maintenance.

<!-- review_stack_entry_start -->

[![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/maximhq/bifrost/pull/3914?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
akshaydeo added a commit that referenced this pull request Jun 5, 2026
* changelogs

* [fix]: map upstream connection failures to 502 instead of 400

When the upstream provider fails to return a response body
(connection reset before the first byte, DNS lookup failure,
connection refused), makeRequestWithDoFunc returned a
BifrostError with StatusCode: nil and IsBifrostError: false.
In SendBifrostError that fell through to HTTP 400, misleading
downstream consumers into treating a retriable upstream
connectivity failure as a non-retriable client bad-request.

Mirrors the timeout-mapping fix in #2412 / #2413 applied to
the connection-failure branches.

Changes:

- core/schemas/bifrost.go - new ProviderConnectionFailed error
  type constant ("provider_connection_failed"), alongside the
  existing RequestCancelled / RequestTimedOut.
- core/providers/utils/utils.go - new NewBifrostUpstreamConnectionError
  constructor mirroring NewBifrostTimeoutError; sets StatusCode
  to 502 (Bad Gateway) and Error.Type to ProviderConnectionFailed.
  IsBifrostError is false (the upstream is the cause).
  Replaced both StatusCode-less return paths in
  makeRequestWithDoFunc with the new constructor:
  the net.OpError / net.DNSError branch, and the generic
  do-error branch.
- core/providers/utils/makerequest_test.go - new
  TestNewBifrostUpstreamConnectionError; updated
  TestMakeRequestWithContext_ClientError to assert 502 +
  ProviderConnectionFailed.
- core/changelog.md - entry at top.

Closes #3927
References #2412 / #2413 (precedent: timeout -> 504 mapping)

* [chore]: add PR number to changelog entry

Addresses review feedback — matches the existing entry format
(e.g. `(#3900)`) for traceability.

Changes:
- core/changelog.md - append (#3929) to the upstream connection
  failures entry.

---------

Signed-off-by: Akshay Deo <akshay@akshaydeo.com>
Co-authored-by: akshaydeo <akshay@akshaydeo.com>
@akshaydeo akshaydeo mentioned this pull request Jun 5, 2026
18 tasks
akshaydeo added a commit that referenced this pull request Jun 6, 2026
## Summary

This PR bumps the Go toolchain version from `1.26.3` to `1.26.4` across all modules and CI workflows, and cuts a new release (`core` v1.5.17, `framework` v1.3.17, `transports` v1.5.9, `plugins/compat` v0.1.16, `plugins/governance` v1.5.17, and associated plugin versions) incorporating a large batch of features and fixes accumulated since the previous release.

## Changes

- **Go 1.26.4** — Updated `go-version` in all GitHub Actions workflows (`e2e-tests`, `helm-release`, `pr-tests`, `release-cli`, `release-pipeline`, `snyk`) and all `go.mod` files (core, framework, transports, cli, all plugins, examples, and test modules).
- **Core (v1.5.17)** — OpenAI compaction support, multi-customer logs and usage tracking, multiple team/business unit support, `request_headers` wildcard pattern capture for OTel and Maxim plugins, xAI `x_search` tool, fetch URL validation with SSRF hardening, `file://` pricing URL scheme, virtual key provider fan-out filtering, and a broad set of fixes including Anthropic prompt cache key, empty thinking block stripping, OpenAI stream usage event cleanup, Gemini numeric schema constraints, stale connection retries, Azure Claude diagnostic strip, and passthrough budget handling.
- **Framework (v1.3.17)** — Scope-aware budgets and limits wired from model configs, provider-level governance, multiple customer budget support with `calendar_aligned` windows, paginated virtual key fetch, `config.json` source-of-truth flow, FTS index cap reduction, sync worker drift fix, cascade deletes for model configs, and high-scale virtual key flow improvements.
- **Transports (v1.5.9)** — Full changelog covering all of the above plus UI improvements (log navigation, customer detail sheet, `BudgetDisplay` component, inline loading shell, materialized view alias), SCIM provisioning fields, Helm/config schema additions (`roles`, `per_user_oauth`), client IP resolution from forwarded headers, and dependency upgrades (`recharts` to 3.8.1, `golang.org/x` CVE remediation).
- **Plugins** — `governance` v1.5.17 adds team budget/rate-limit exporters, ghost node reconciliation fix, and VK double usage counting fix; `logging` v1.5.17 adds wildcard header capture and file attachment rendering; `otel` v1.2.17 adds `disable_content_logging` and multiple collectors support; `maxim` v1.6.17 adds `request_headers` wildcard capture; `compat` v0.1.16 fixes `max_tokens` preservation during param filtering.

## Type of change

- [ ] Bug fix
- [x] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

## Affected areas

- [x] Core (Go)
- [x] Transports (HTTP)
- [x] Providers/Integrations
- [x] Plugins
- [x] UI (React)
- [ ] Docs

## How to test

```sh
# Verify Go version
go version  # should report go1.26.4

# Run core tests
cd core && go test ./...

# Run framework tests
cd framework && go test ./...

# Run transports tests
cd transports && go test ./...

# Run plugin tests
cd plugins/governance && go test ./...
cd plugins/logging && go test ./...
cd plugins/otel && go test ./...

# UI
cd ui
pnpm i
pnpm build
pnpm test
```

## Breaking changes

- [ ] Yes
- [x] No

## Related issues

#4053, #4066, #4041, #4012, #3976, #3947, #3991, #4045, #3957, #3938, #3937, #3939, #3981, #3998, #3997, #4092, #4091, #4079, #4080, #4086, #3929, #3994, #4028, #3970, #3919, #3861, #3664, #3999, #4088, #4070, #4051, #4043, #4057, #4023, #3941, #3955, #4024, #3956, #3967, #3925, #3992, #3900

## Security considerations

- Fetch URL validation hardened against SSRF by tightening IP checks for private networks and link-local addresses (#4092, #3947, #3991).
- Transitive `golang.org/x` dependencies (crypto, net, sys, text) bumped to address Docker Scout CVEs (#3900).

## Checklist

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * OpenAI compaction, multi-customer/team logstore support, request-header wildcard capture, enhanced governance (provider-level & scope-aware limits), disable-content-logging option, support for multiple OpenTelemetry collectors, SSRF hardening and URL validation.

* **Chores**
  * Bumped Go toolchain across modules and updated component/plugin version releases.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@akshaydeo akshaydeo mentioned this pull request Jun 7, 2026
akshaydeo added a commit that referenced this pull request Jun 7, 2026
* changelogs

* [fix]: map upstream connection failures to 502 instead of 400

When the upstream provider fails to return a response body
(connection reset before the first byte, DNS lookup failure,
connection refused), makeRequestWithDoFunc returned a
BifrostError with StatusCode: nil and IsBifrostError: false.
In SendBifrostError that fell through to HTTP 400, misleading
downstream consumers into treating a retriable upstream
connectivity failure as a non-retriable client bad-request.

Mirrors the timeout-mapping fix in #2412 / #2413 applied to
the connection-failure branches.

Changes:

- core/schemas/bifrost.go - new ProviderConnectionFailed error
  type constant ("provider_connection_failed"), alongside the
  existing RequestCancelled / RequestTimedOut.
- core/providers/utils/utils.go - new NewBifrostUpstreamConnectionError
  constructor mirroring NewBifrostTimeoutError; sets StatusCode
  to 502 (Bad Gateway) and Error.Type to ProviderConnectionFailed.
  IsBifrostError is false (the upstream is the cause).
  Replaced both StatusCode-less return paths in
  makeRequestWithDoFunc with the new constructor:
  the net.OpError / net.DNSError branch, and the generic
  do-error branch.
- core/providers/utils/makerequest_test.go - new
  TestNewBifrostUpstreamConnectionError; updated
  TestMakeRequestWithContext_ClientError to assert 502 +
  ProviderConnectionFailed.
- core/changelog.md - entry at top.

Closes #3927
References #2412 / #2413 (precedent: timeout -> 504 mapping)

* [chore]: add PR number to changelog entry

Addresses review feedback — matches the existing entry format
(e.g. `(#3900)`) for traceability.

Changes:
- core/changelog.md - append (#3929) to the upstream connection
  failures entry.

---------

Signed-off-by: Akshay Deo <akshay@akshaydeo.com>
Co-authored-by: akshaydeo <akshay@akshaydeo.com>
akshaydeo added a commit that referenced this pull request Jun 7, 2026
This PR bumps the Go toolchain version from `1.26.3` to `1.26.4` across all modules and CI workflows, and cuts a new release (`core` v1.5.17, `framework` v1.3.17, `transports` v1.5.9, `plugins/compat` v0.1.16, `plugins/governance` v1.5.17, and associated plugin versions) incorporating a large batch of features and fixes accumulated since the previous release.

- **Go 1.26.4** — Updated `go-version` in all GitHub Actions workflows (`e2e-tests`, `helm-release`, `pr-tests`, `release-cli`, `release-pipeline`, `snyk`) and all `go.mod` files (core, framework, transports, cli, all plugins, examples, and test modules).
- **Core (v1.5.17)** — OpenAI compaction support, multi-customer logs and usage tracking, multiple team/business unit support, `request_headers` wildcard pattern capture for OTel and Maxim plugins, xAI `x_search` tool, fetch URL validation with SSRF hardening, `file://` pricing URL scheme, virtual key provider fan-out filtering, and a broad set of fixes including Anthropic prompt cache key, empty thinking block stripping, OpenAI stream usage event cleanup, Gemini numeric schema constraints, stale connection retries, Azure Claude diagnostic strip, and passthrough budget handling.
- **Framework (v1.3.17)** — Scope-aware budgets and limits wired from model configs, provider-level governance, multiple customer budget support with `calendar_aligned` windows, paginated virtual key fetch, `config.json` source-of-truth flow, FTS index cap reduction, sync worker drift fix, cascade deletes for model configs, and high-scale virtual key flow improvements.
- **Transports (v1.5.9)** — Full changelog covering all of the above plus UI improvements (log navigation, customer detail sheet, `BudgetDisplay` component, inline loading shell, materialized view alias), SCIM provisioning fields, Helm/config schema additions (`roles`, `per_user_oauth`), client IP resolution from forwarded headers, and dependency upgrades (`recharts` to 3.8.1, `golang.org/x` CVE remediation).
- **Plugins** — `governance` v1.5.17 adds team budget/rate-limit exporters, ghost node reconciliation fix, and VK double usage counting fix; `logging` v1.5.17 adds wildcard header capture and file attachment rendering; `otel` v1.2.17 adds `disable_content_logging` and multiple collectors support; `maxim` v1.6.17 adds `request_headers` wildcard capture; `compat` v0.1.16 fixes `max_tokens` preservation during param filtering.

- [ ] Bug fix
- [x] Feature
- [ ] Refactor
- [ ] Documentation
- [x] Chore/CI

- [x] Core (Go)
- [x] Transports (HTTP)
- [x] Providers/Integrations
- [x] Plugins
- [x] UI (React)
- [ ] Docs

```sh
go version  # should report go1.26.4

cd core && go test ./...

cd framework && go test ./...

cd transports && go test ./...

cd plugins/governance && go test ./...
cd plugins/logging && go test ./...
cd plugins/otel && go test ./...

cd ui
pnpm i
pnpm build
pnpm test
```

- [ ] Yes
- [x] No

- Fetch URL validation hardened against SSRF by tightening IP checks for private networks and link-local addresses (#4092, #3947, #3991).
- Transitive `golang.org/x` dependencies (crypto, net, sys, text) bumped to address Docker Scout CVEs (#3900).

- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

* **New Features**
  * OpenAI compaction, multi-customer/team logstore support, request-header wildcard capture, enhanced governance (provider-level & scope-aware limits), disable-content-logging option, support for multiple OpenTelemetry collectors, SSRF hardening and URL validation.

* **Chores**
  * Bumped Go toolchain across modules and updated component/plugin version releases.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
akshaydeo added a commit that referenced this pull request Jun 7, 2026
## ✨ Features

- **OpenAI Compaction** — Added OpenAI conversation compaction support
across core, framework, logging, and the API surface (#4053)
- **Multi-Customer & Org Hierarchy** — Logs and usage tracking now
support multiple customers, teams, and business units, including
business unit CRUD, team assignment, and governance endpoints in the
OpenAPI spec (#4066, #4041, #4082)
- **Provider-Level Governance** — Budgets & limits are now scope-aware
and can be applied at the virtual-key top level and per provider, wired
from the model configs table, with UI filters for scope and providers
(#3938, #3937, #3939, #3981, #3962)
- **Customer Budgets** — Customers support multiple budgets and
`calendar_aligned` budget windows (#3998, #3997)
- **Virtual Key Attribution & Controls** — Added a `created_by` user
attribution column and a `blacklisted_models` column for virtual key
provider configs (#3672, #3653)
- **Request Header Capture** — OTel and Maxim observability plugins
capture `request_headers` by pattern, with wildcard support (e.g.
`x-custom-*`); logging gained the same wildcard header capture (#4012,
#3958)
- **OTel Content Controls & Collectors** — New `disable_content_logging`
option drops message/tool content from exported spans, plus support for
multiple OTel collectors (#4064, #3894)
- **xAI x_search** — Added xAI `x_search` tool support (#3976)
- **URL Validation** — Added fetch URL validation with private-network
configuration and link-local blocking (#3947, #3991)
- **File Scheme Pricing URLs** — Pricing source URLs now accept the
`file://` scheme for air-gapped and self-hosted deployments (#4045)
- **Paginated Virtual Keys** — Virtual key fetching is paginated to
handle deployments with very large numbers of keys (#3957)
- **Client IP Resolution** — Resolve client IP from
`X-Forwarded-For`/`X-Real-IP` headers
- **SCIM Provisioning** — Added `attributeType`/`attributeValue` SCIM
provisioning fields
- **Helm/Config Schema** — Added `roles` RBAC governance config and
`per_user_oauth` MCP auth to the Helm chart and config schema (#4004,
#4009)
- **Log Navigation UI** — Added a "View logs" menu item to customer,
team, and virtual key tables, clickable links in log detail views, a
customer detail sheet, and a reusable `BudgetDisplay` component (#4073,
#4054, #4026, #4055)
- **Faster First Paint** — Added an inline loading shell to `#root`
before React mounts (#4063)
- **Materialized View Alias** — Added an `alias` column to the
materialized view with filter support (#4078)

## 🐞 Fixed

- **Fetch URL IP Checks** — Hardened fetch URL IP checks against SSRF
(#4092)
- **Mantle Model Matching** — Broadened Mantle model matching to all
`gpt` variants (#4091)
- **Empty Thinking Blocks** — Strip thinking blocks when the signature
is empty (#4079)
- **OpenAI Stream Usage** — Removed usage from the `responses.created`
event in the OpenAI stream (#4080)
- **Prompt Cache Key** — Set the prompt cache key from the Anthropic
integration (#4086)
- **Upstream Failure Status** — Map upstream connection failures to 502
instead of 400 (#3929) (thanks
[@chris-colinsky](https://github.com/chris-colinsky)!)
- **Gemini Schema Constraints** — Accept numeric schema integer
constraints for Gemini (#3994) (thanks
[@yanhao98](https://github.com/yanhao98)!)
- **Files Provider Param** — Accept the `?provider=` query param on `GET
/v1/files` (#3971) (thanks [@alexef](https://github.com/alexef)!)
- **Optional Batch Model** — Made the `model` field optional on `POST
/v1/batches` (#3973) (thanks [@alexef](https://github.com/alexef)!)
- **Helm Azure Config** — Added missing `azure_key_config` fields to the
Helm schema (#3996) (thanks
[@axelray-dev](https://github.com/axelray-dev)!)
- **Text Completion Chunk Model** — Added the missing `Model` field to
`TextCompletionChunkResponse` (#3970) (thanks
[@kuishou68](https://github.com/kuishou68)!)
- **MCP Inline stdio Env** — MCP stdio server configs accept inline
environment variable assignments (#3861) (thanks
[@Shushmitaaaa](https://github.com/Shushmitaaaa)!)
- **Orphaned Tool Results** — Orphaned tool results in the OpenAI to
Anthropic conversion flow are no longer rejected by the Anthropic API
(#3919)
- **Node Usage Reconciliation** — Added a monotonic `inc_number` log
cursor so node usage reconciliation does not skip late async log writes
(#3664)
- **Bedrock Output Assessments** — Corrected the type of
`outputAssessments` in Bedrock responses (#4028)
- **Model Pool Pricing Reloads** — Preserve non-pricing model pool
entries across pricing reloads (#3999)
- **Ghost Node Reconciliation** — Replicate the VK hierarchy flow for
ghost node reconciliation (#4088)
- **VK Double Usage Counting** — Fixed double usage counting when
creating a virtual key (#4070)
- **Model Config Lifecycle** — Cascade deletes for model configs and
removal of stale in-memory model configs (#4051, #4043)
- **FTS Index Cap** — Reduced the FTS index `left()` cap from 800k to
250k chars to stay within the tsvector limit (#4057)
- **Sync Worker Drift** — Reduced the sync worker ticker period to 5m to
prevent threshold drift (#4023)
- **Passthrough** — Fixed passthrough budgets, gated passthrough models
per VK, model extraction for Azure passthrough, and restricted
fallbacks/provider selection to the VK boundary (#3941, #3988, #3983,
#3924)
- **Provider Response Headers** — Strip provider response headers and
add a content-type filter (#3955, #4024)
- **Stream Handling** — Drain non-SSE stream readers and retry stale
connections (#3956, #3967)
- **Azure Claude** — Strip Azure diagnostic property for Claude models
(#3925)
- **Compat max_tokens** — Preserve chat `max_tokens` during param
filtering (#3992)
- **Raw Request Flag** — Removed the raw request flag from providers
that don't support it (#4058)
- **UI Fixes** — Standardized page container layout, virtual key model
configs UI, and dashboard chart tooltips (#4046, #4052, #4044)

## 🔧 Maintenance

- **Dependency Upgrades** — Bumped transitive `golang.org/x`
dependencies (crypto, net, sys, text) for Docker Scout CVE remediation
and `recharts` to 3.8.1; cascaded version bumps across all modules
(#3900, #4003)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants