diff --git a/cli/testdata/coder_server_--help.golden b/cli/testdata/coder_server_--help.golden
index 447ce1ae4fce2..7e7a7ece0d958 100644
--- a/cli/testdata/coder_server_--help.golden
+++ b/cli/testdata/coder_server_--help.golden
@@ -80,6 +80,41 @@ OPTIONS:
Periodically check for new releases of Coder and inform the owner. The
check is performed once per day.
+AIBRIDGE OPTIONS:
+ --aibridge-anthropic-base-url string, $CODER_AIBRIDGE_ANTHROPIC_BASE_URL (default: https://api.anthropic.com/)
+ The base URL of the Anthropic API.
+
+ --aibridge-anthropic-key string, $CODER_AIBRIDGE_ANTHROPIC_KEY
+ The key to authenticate against the Anthropic API.
+
+ --aibridge-bedrock-access-key string, $CODER_AIBRIDGE_BEDROCK_ACCESS_KEY
+ The access key to authenticate against the AWS Bedrock API.
+
+ --aibridge-bedrock-access-key-secret string, $CODER_AIBRIDGE_BEDROCK_ACCESS_KEY_SECRET
+ The access key secret to use with the access key to authenticate
+ against the AWS Bedrock API.
+
+ --aibridge-bedrock-model string, $CODER_AIBRIDGE_BEDROCK_MODEL (default: global.anthropic.claude-sonnet-4-5-20250929-v1:0)
+ The model to use when making requests to the AWS Bedrock API.
+
+ --aibridge-bedrock-region string, $CODER_AIBRIDGE_BEDROCK_REGION
+ The AWS Bedrock API region.
+
+ --aibridge-bedrock-small-fastmodel string, $CODER_AIBRIDGE_BEDROCK_SMALL_FAST_MODEL (default: global.anthropic.claude-haiku-4-5-20251001-v1:0)
+ The small fast model to use when making requests to the AWS Bedrock
+ API. Claude Code uses Haiku-class models to perform background tasks.
+ See
+ https://docs.claude.com/en/docs/claude-code/settings#environment-variables.
+
+ --aibridge-enabled bool, $CODER_AIBRIDGE_ENABLED (default: false)
+ Whether to start an in-memory aibridged instance.
+
+ --aibridge-openai-base-url string, $CODER_AIBRIDGE_OPENAI_BASE_URL (default: https://api.openai.com/v1/)
+ The base URL of the OpenAI API.
+
+ --aibridge-openai-key string, $CODER_AIBRIDGE_OPENAI_KEY
+ The key to authenticate against the OpenAI API.
+
CLIENT OPTIONS:
These options change the behavior of how clients interact with the Coder.
Clients include the Coder CLI, Coder Desktop, IDE extensions, and the web UI.
diff --git a/cli/testdata/server-config.yaml.golden b/cli/testdata/server-config.yaml.golden
index cbabf0474f291..225c240d9e761 100644
--- a/cli/testdata/server-config.yaml.golden
+++ b/cli/testdata/server-config.yaml.golden
@@ -714,8 +714,7 @@ workspace_prebuilds:
# (default: 3, type: int)
failure_hard_limit: 3
aibridge:
- # Whether to start an in-memory aibridged instance ("aibridge" experiment must be
- # enabled, too).
+ # Whether to start an in-memory aibridged instance.
# (default: false, type: bool)
enabled: false
# The base URL of the OpenAI API.
diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go
index 45b220eb9d255..89af9e2386180 100644
--- a/coderd/apidoc/docs.go
+++ b/coderd/apidoc/docs.go
@@ -14316,11 +14316,9 @@ const docTemplate = `{
"web-push",
"oauth2",
"mcp-server-http",
- "workspace-sharing",
- "aibridge"
+ "workspace-sharing"
],
"x-enum-comments": {
- "ExperimentAIBridge": "Enables AI Bridge functionality.",
"ExperimentAutoFillParameters": "This should not be taken out of experiments until we have redesigned the feature.",
"ExperimentExample": "This isn't used for anything.",
"ExperimentMCPServerHTTP": "Enables the MCP HTTP server functionality.",
@@ -14338,8 +14336,7 @@ const docTemplate = `{
"ExperimentWebPush",
"ExperimentOAuth2",
"ExperimentMCPServerHTTP",
- "ExperimentWorkspaceSharing",
- "ExperimentAIBridge"
+ "ExperimentWorkspaceSharing"
]
},
"codersdk.ExternalAPIKeyScopes": {
diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json
index 8e6a0030cb83b..759647d9b1ba7 100644
--- a/coderd/apidoc/swagger.json
+++ b/coderd/apidoc/swagger.json
@@ -12923,11 +12923,9 @@
"web-push",
"oauth2",
"mcp-server-http",
- "workspace-sharing",
- "aibridge"
+ "workspace-sharing"
],
"x-enum-comments": {
- "ExperimentAIBridge": "Enables AI Bridge functionality.",
"ExperimentAutoFillParameters": "This should not be taken out of experiments until we have redesigned the feature.",
"ExperimentExample": "This isn't used for anything.",
"ExperimentMCPServerHTTP": "Enables the MCP HTTP server functionality.",
@@ -12945,8 +12943,7 @@
"ExperimentWebPush",
"ExperimentOAuth2",
"ExperimentMCPServerHTTP",
- "ExperimentWorkspaceSharing",
- "ExperimentAIBridge"
+ "ExperimentWorkspaceSharing"
]
},
"codersdk.ExternalAPIKeyScopes": {
diff --git a/codersdk/deployment.go b/codersdk/deployment.go
index 97bbb13bedbc7..9425a3740f089 100644
--- a/codersdk/deployment.go
+++ b/codersdk/deployment.go
@@ -3241,14 +3241,13 @@ Write out the current server config as YAML to stdout.`,
// AIBridge Options
{
Name: "AIBridge Enabled",
- Description: fmt.Sprintf("Whether to start an in-memory aibridged instance (%q experiment must be enabled, too).", ExperimentAIBridge),
+ Description: "Whether to start an in-memory aibridged instance.",
Flag: "aibridge-enabled",
Env: "CODER_AIBRIDGE_ENABLED",
Value: &c.AI.BridgeConfig.Enabled,
Default: "false",
Group: &deploymentGroupAIBridge,
YAML: "enabled",
- Hidden: true,
},
{
Name: "AIBridge OpenAI Base URL",
@@ -3259,7 +3258,6 @@ Write out the current server config as YAML to stdout.`,
Default: "https://api.openai.com/v1/",
Group: &deploymentGroupAIBridge,
YAML: "openai_base_url",
- Hidden: true,
},
{
Name: "AIBridge OpenAI Key",
@@ -3270,7 +3268,6 @@ Write out the current server config as YAML to stdout.`,
Default: "",
Group: &deploymentGroupAIBridge,
YAML: "openai_key",
- Hidden: true,
},
{
Name: "AIBridge Anthropic Base URL",
@@ -3281,7 +3278,6 @@ Write out the current server config as YAML to stdout.`,
Default: "https://api.anthropic.com/",
Group: &deploymentGroupAIBridge,
YAML: "anthropic_base_url",
- Hidden: true,
},
{
Name: "AIBridge Anthropic Key",
@@ -3292,7 +3288,6 @@ Write out the current server config as YAML to stdout.`,
Default: "",
Group: &deploymentGroupAIBridge,
YAML: "anthropic_key",
- Hidden: true,
},
{
Name: "AIBridge Bedrock Region",
@@ -3303,7 +3298,6 @@ Write out the current server config as YAML to stdout.`,
Default: "",
Group: &deploymentGroupAIBridge,
YAML: "bedrock_region",
- Hidden: true,
},
{
Name: "AIBridge Bedrock Access Key",
@@ -3314,7 +3308,6 @@ Write out the current server config as YAML to stdout.`,
Default: "",
Group: &deploymentGroupAIBridge,
YAML: "bedrock_access_key",
- Hidden: true,
},
{
Name: "AIBridge Bedrock Access Key Secret",
@@ -3325,7 +3318,6 @@ Write out the current server config as YAML to stdout.`,
Default: "",
Group: &deploymentGroupAIBridge,
YAML: "bedrock_access_key_secret",
- Hidden: true,
},
{
Name: "AIBridge Bedrock Model",
@@ -3336,7 +3328,6 @@ Write out the current server config as YAML to stdout.`,
Default: "global.anthropic.claude-sonnet-4-5-20250929-v1:0", // See https://docs.claude.com/en/api/claude-on-amazon-bedrock#accessing-bedrock.
Group: &deploymentGroupAIBridge,
YAML: "bedrock_model",
- Hidden: true,
},
{
Name: "AIBridge Bedrock Small Fast Model",
@@ -3347,7 +3338,6 @@ Write out the current server config as YAML to stdout.`,
Default: "global.anthropic.claude-haiku-4-5-20251001-v1:0", // See https://docs.claude.com/en/api/claude-on-amazon-bedrock#accessing-bedrock.
Group: &deploymentGroupAIBridge,
YAML: "bedrock_small_fast_model",
- Hidden: true,
},
{
Name: "Enable Authorization Recordings",
@@ -3645,7 +3635,6 @@ const (
ExperimentOAuth2 Experiment = "oauth2" // Enables OAuth2 provider functionality.
ExperimentMCPServerHTTP Experiment = "mcp-server-http" // Enables the MCP HTTP server functionality.
ExperimentWorkspaceSharing Experiment = "workspace-sharing" // Enables updating workspace ACLs for sharing with users and groups.
- ExperimentAIBridge Experiment = "aibridge" // Enables AI Bridge functionality.
)
func (e Experiment) DisplayName() string {
@@ -3666,8 +3655,6 @@ func (e Experiment) DisplayName() string {
return "MCP HTTP Server Functionality"
case ExperimentWorkspaceSharing:
return "Workspace Sharing"
- case ExperimentAIBridge:
- return "AI Bridge"
default:
// Split on hyphen and convert to title case
// e.g. "web-push" -> "Web Push", "mcp-server-http" -> "Mcp Server Http"
@@ -3686,7 +3673,6 @@ var ExperimentsKnown = Experiments{
ExperimentOAuth2,
ExperimentMCPServerHTTP,
ExperimentWorkspaceSharing,
- ExperimentAIBridge,
}
// ExperimentsSafe should include all experiments that are safe for
diff --git a/docs/ai-coder/ai-bridge.md b/docs/ai-coder/ai-bridge.md
index c7cfbe7d85ea2..050d6dc57e998 100644
--- a/docs/ai-coder/ai-bridge.md
+++ b/docs/ai-coder/ai-bridge.md
@@ -1,8 +1,5 @@
# AI Bridge
-> [!NOTE]
-> AI Bridge is currently an _experimental_ feature.
-

Bridge is a smart proxy for AI. It acts as a man-in-the-middle between your users' coding agents / IDEs
@@ -45,17 +42,14 @@ Bridge runs inside the Coder control plane, requiring no separate compute to dep
### Activation
-To enable this feature, activate the `aibridge` experiment using an environment variable or a CLI flag.
-Additionally, you will need to enable Bridge explicitly:
+You will need to enable Bridge explicitly:
```sh
-CODER_EXPERIMENTS="aibridge" CODER_AIBRIDGE_ENABLED=true coder server
+CODER_AIBRIDGE_ENABLED=true coder server
# or
-coder server --experiments=aibridge --aibridge-enabled=true
+coder server --aibridge-enabled=true
```
-_If you have other experiments enabled, separate them by commas._
-
### Providers
Bridge currently supports OpenAI and Anthropic APIs.
@@ -133,7 +127,7 @@ All of these records are associated to an "interception" record, which maps 1:1
These logs can be used to determine usage patterns, track costs, and evaluate tooling adoption.
-This data is currently accessible through the API and CLI (experimental), which we advise administrators export to their observability platform of choice. We've configured a Grafana dashboard to display Claude Code usage internally which can be imported as a starting point for your tooling adoption metrics.
+This data is currently accessible through the API and CLI, which we advise administrators export to their observability platform of choice. We've configured a Grafana dashboard to display Claude Code usage internally which can be imported as a starting point for your tooling adoption metrics.

diff --git a/docs/reference/api/schemas.md b/docs/reference/api/schemas.md
index 796b4811cc4c1..037c9cfa109bb 100644
--- a/docs/reference/api/schemas.md
+++ b/docs/reference/api/schemas.md
@@ -4059,7 +4059,6 @@ CreateWorkspaceRequest provides options for creating a new workspace. Only one o
| `oauth2` |
| `mcp-server-http` |
| `workspace-sharing` |
-| `aibridge` |
## codersdk.ExternalAPIKeyScopes
diff --git a/docs/reference/cli/server.md b/docs/reference/cli/server.md
index bdc424bdd7a8b..e689f7fa28336 100644
--- a/docs/reference/cli/server.md
+++ b/docs/reference/cli/server.md
@@ -1647,3 +1647,108 @@ How often to reconcile workspace prebuilds state.
| Default | false |
Hide AI tasks from the dashboard.
+
+### --aibridge-enabled
+
+| | |
+|-------------|--------------------------------------|
+| Type | bool |
+| Environment | $CODER_AIBRIDGE_ENABLED |
+| YAML | aibridge.enabled |
+| Default | false |
+
+Whether to start an in-memory aibridged instance.
+
+### --aibridge-openai-base-url
+
+| | |
+|-------------|----------------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_OPENAI_BASE_URL |
+| YAML | aibridge.openai_base_url |
+| Default | https://api.openai.com/v1/ |
+
+The base URL of the OpenAI API.
+
+### --aibridge-openai-key
+
+| | |
+|-------------|-----------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_OPENAI_KEY |
+| YAML | aibridge.openai_key |
+
+The key to authenticate against the OpenAI API.
+
+### --aibridge-anthropic-base-url
+
+| | |
+|-------------|-------------------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_ANTHROPIC_BASE_URL |
+| YAML | aibridge.anthropic_base_url |
+| Default | https://api.anthropic.com/ |
+
+The base URL of the Anthropic API.
+
+### --aibridge-anthropic-key
+
+| | |
+|-------------|--------------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_ANTHROPIC_KEY |
+| YAML | aibridge.anthropic_key |
+
+The key to authenticate against the Anthropic API.
+
+### --aibridge-bedrock-region
+
+| | |
+|-------------|---------------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_BEDROCK_REGION |
+| YAML | aibridge.bedrock_region |
+
+The AWS Bedrock API region.
+
+### --aibridge-bedrock-access-key
+
+| | |
+|-------------|-------------------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_BEDROCK_ACCESS_KEY |
+| YAML | aibridge.bedrock_access_key |
+
+The access key to authenticate against the AWS Bedrock API.
+
+### --aibridge-bedrock-access-key-secret
+
+| | |
+|-------------|--------------------------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_BEDROCK_ACCESS_KEY_SECRET |
+| YAML | aibridge.bedrock_access_key_secret |
+
+The access key secret to use with the access key to authenticate against the AWS Bedrock API.
+
+### --aibridge-bedrock-model
+
+| | |
+|-------------|---------------------------------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_BEDROCK_MODEL |
+| YAML | aibridge.bedrock_model |
+| Default | global.anthropic.claude-sonnet-4-5-20250929-v1:0 |
+
+The model to use when making requests to the AWS Bedrock API.
+
+### --aibridge-bedrock-small-fastmodel
+
+| | |
+|-------------|--------------------------------------------------------------|
+| Type | string |
+| Environment | $CODER_AIBRIDGE_BEDROCK_SMALL_FAST_MODEL |
+| YAML | aibridge.bedrock_small_fast_model |
+| Default | global.anthropic.claude-haiku-4-5-20251001-v1:0 |
+
+The small fast model to use when making requests to the AWS Bedrock API. Claude Code uses Haiku-class models to perform background tasks. See https://docs.claude.com/en/docs/claude-code/settings#environment-variables.
diff --git a/enterprise/cli/exp_aibridge_test.go b/enterprise/cli/exp_aibridge_test.go
index 466d6b3df8246..db1cf43629626 100644
--- a/enterprise/cli/exp_aibridge_test.go
+++ b/enterprise/cli/exp_aibridge_test.go
@@ -27,7 +27,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, db, owner := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
@@ -78,7 +77,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, db, owner := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
@@ -164,7 +162,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, db, owner := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
diff --git a/enterprise/cli/server.go b/enterprise/cli/server.go
index ea9f2d3e93825..9dab05546f6c6 100644
--- a/enterprise/cli/server.go
+++ b/enterprise/cli/server.go
@@ -7,7 +7,6 @@ import (
"database/sql"
"encoding/base64"
"errors"
- "fmt"
"io"
"net/url"
@@ -16,7 +15,6 @@ import (
"tailscale.com/types/key"
"github.com/coder/coder/v2/coderd/database"
- "github.com/coder/coder/v2/codersdk"
"github.com/coder/coder/v2/cryptorand"
"github.com/coder/coder/v2/enterprise/audit"
"github.com/coder/coder/v2/enterprise/audit/backends"
@@ -146,8 +144,6 @@ func (r *RootCmd) Server(_ func()) *serpent.Command {
}
closers.Add(publisher)
- experiments := agplcoderd.ReadExperiments(options.Logger, options.DeploymentValues.Experiments.Value())
-
// In-memory aibridge daemon.
// TODO(@deansheather): the lifecycle of the aibridged server is
// probably better managed by the enterprise API type itself. Managing
@@ -155,26 +151,18 @@ func (r *RootCmd) Server(_ func()) *serpent.Command {
// is not entitled to the feature.
var aibridgeDaemon *aibridged.Server
if options.DeploymentValues.AI.BridgeConfig.Enabled {
- if experiments.Enabled(codersdk.ExperimentAIBridge) {
- aibridgeDaemon, err = newAIBridgeDaemon(api)
- if err != nil {
- return nil, nil, xerrors.Errorf("create aibridged: %w", err)
- }
+ aibridgeDaemon, err = newAIBridgeDaemon(api)
+ if err != nil {
+ return nil, nil, xerrors.Errorf("create aibridged: %w", err)
+ }
- api.RegisterInMemoryAIBridgedHTTPHandler(aibridgeDaemon)
+ api.RegisterInMemoryAIBridgedHTTPHandler(aibridgeDaemon)
- // When running as an in-memory daemon, the HTTP handler is wired into the
- // coderd API and therefore is subject to its context. Calling Close() on
- // aibridged will NOT affect in-flight requests but those will be closed once
- // the API server is itself shutdown.
- closers.Add(aibridgeDaemon)
- } else {
- api.Logger.Warn(ctx, fmt.Sprintf("CODER_AIBRIDGE_ENABLED=true but experiment %q not enabled", codersdk.ExperimentAIBridge))
- }
- } else {
- if experiments.Enabled(codersdk.ExperimentAIBridge) {
- api.Logger.Warn(ctx, "aibridge experiment enabled but CODER_AIBRIDGE_ENABLED=false")
- }
+ // When running as an in-memory daemon, the HTTP handler is wired into the
+ // coderd API and therefore is subject to its context. Calling Close() on
+ // aibridged will NOT affect in-flight requests but those will be closed once
+ // the API server is itself shutdown.
+ closers.Add(aibridgeDaemon)
}
return api.AGPL, closers, nil
diff --git a/enterprise/cli/testdata/coder_server_--help.golden b/enterprise/cli/testdata/coder_server_--help.golden
index 162d4214ccc6a..492306c55882d 100644
--- a/enterprise/cli/testdata/coder_server_--help.golden
+++ b/enterprise/cli/testdata/coder_server_--help.golden
@@ -81,6 +81,41 @@ OPTIONS:
Periodically check for new releases of Coder and inform the owner. The
check is performed once per day.
+AIBRIDGE OPTIONS:
+ --aibridge-anthropic-base-url string, $CODER_AIBRIDGE_ANTHROPIC_BASE_URL (default: https://api.anthropic.com/)
+ The base URL of the Anthropic API.
+
+ --aibridge-anthropic-key string, $CODER_AIBRIDGE_ANTHROPIC_KEY
+ The key to authenticate against the Anthropic API.
+
+ --aibridge-bedrock-access-key string, $CODER_AIBRIDGE_BEDROCK_ACCESS_KEY
+ The access key to authenticate against the AWS Bedrock API.
+
+ --aibridge-bedrock-access-key-secret string, $CODER_AIBRIDGE_BEDROCK_ACCESS_KEY_SECRET
+ The access key secret to use with the access key to authenticate
+ against the AWS Bedrock API.
+
+ --aibridge-bedrock-model string, $CODER_AIBRIDGE_BEDROCK_MODEL (default: global.anthropic.claude-sonnet-4-5-20250929-v1:0)
+ The model to use when making requests to the AWS Bedrock API.
+
+ --aibridge-bedrock-region string, $CODER_AIBRIDGE_BEDROCK_REGION
+ The AWS Bedrock API region.
+
+ --aibridge-bedrock-small-fastmodel string, $CODER_AIBRIDGE_BEDROCK_SMALL_FAST_MODEL (default: global.anthropic.claude-haiku-4-5-20251001-v1:0)
+ The small fast model to use when making requests to the AWS Bedrock
+ API. Claude Code uses Haiku-class models to perform background tasks.
+ See
+ https://docs.claude.com/en/docs/claude-code/settings#environment-variables.
+
+ --aibridge-enabled bool, $CODER_AIBRIDGE_ENABLED (default: false)
+ Whether to start an in-memory aibridged instance.
+
+ --aibridge-openai-base-url string, $CODER_AIBRIDGE_OPENAI_BASE_URL (default: https://api.openai.com/v1/)
+ The base URL of the OpenAI API.
+
+ --aibridge-openai-key string, $CODER_AIBRIDGE_OPENAI_KEY
+ The key to authenticate against the OpenAI API.
+
CLIENT OPTIONS:
These options change the behavior of how clients interact with the Coder.
Clients include the Coder CLI, Coder Desktop, IDE extensions, and the web UI.
diff --git a/enterprise/coderd/aibridge_test.go b/enterprise/coderd/aibridge_test.go
index abaf82dbe85f8..4198fdcf178ec 100644
--- a/enterprise/coderd/aibridge_test.go
+++ b/enterprise/coderd/aibridge_test.go
@@ -27,7 +27,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, _ := coderdenttest.New(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
@@ -50,7 +49,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Run("EmptyDB", func(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, _ := coderdenttest.New(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
@@ -71,7 +69,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Run("OK", func(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, db, firstUser := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
@@ -183,7 +180,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, db, firstUser := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
@@ -299,7 +295,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Run("Authorized", func(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
adminClient, db, firstUser := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
@@ -345,7 +340,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Run("Filter", func(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, db, firstUser := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
@@ -526,7 +520,6 @@ func TestAIBridgeListInterceptions(t *testing.T) {
t.Run("FilterErrors", func(t *testing.T) {
t.Parallel()
dv := coderdtest.DeploymentValues(t)
- dv.Experiments = []string{string(codersdk.ExperimentAIBridge)}
client, _ := coderdenttest.New(t, &coderdenttest.Options{
Options: &coderdtest.Options{
DeploymentValues: dv,
diff --git a/enterprise/coderd/coderd.go b/enterprise/coderd/coderd.go
index 7666e8f957fc2..29a14a1169712 100644
--- a/enterprise/coderd/coderd.go
+++ b/enterprise/coderd/coderd.go
@@ -230,7 +230,7 @@ func New(ctx context.Context, options *Options) (_ *API, err error) {
r.Route("/aibridge", func(r chi.Router) {
r.Use(
api.RequireFeatureMW(codersdk.FeatureAIBridge),
- httpmw.RequireExperimentWithDevBypass(api.AGPL.Experiments, codersdk.ExperimentAIBridge),
+ httpmw.RequireExperimentWithDevBypass(api.AGPL.Experiments),
)
r.Group(func(r chi.Router) {
r.Use(apiKeyMiddleware)
diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts
index d671cc2bb117e..b964cf4d05f28 100644
--- a/site/src/api/typesGenerated.ts
+++ b/site/src/api/typesGenerated.ts
@@ -1894,7 +1894,6 @@ export const EntitlementsWarningHeader = "X-Coder-Entitlements-Warning";
// From codersdk/deployment.go
export type Experiment =
- | "aibridge"
| "auto-fill-parameters"
| "example"
| "mcp-server-http"
@@ -1905,7 +1904,6 @@ export type Experiment =
| "workspace-usage";
export const Experiments: Experiment[] = [
- "aibridge",
"auto-fill-parameters",
"example",
"mcp-server-http",