Skip to content

feat: add experimental coderd_ai_provider resource#368

Open
ethanndickson wants to merge 5 commits into
mainfrom
ethan/ai-provider-resource
Open

feat: add experimental coderd_ai_provider resource#368
ethanndickson wants to merge 5 commits into
mainfrom
ethan/ai-provider-resource

Conversation

@ethanndickson

@ethanndickson ethanndickson commented Jun 23, 2026

Copy link
Copy Markdown
Member

Stack — builds on #370 (external Postgres sidecar for acceptance tests); review/merge that first.

Summary

Adds coderd_ai_provider for managing Coder AI Gateway providers from Terraform — OpenAI-style API-key providers and AWS Bedrock providers — with full CRUD + import, generated docs/examples, and acceptance/unit tests. The resource is marked experimental via a warning callout in its docs.

Approach

  • Write-only secrets. Plaintext API keys and AWS credentials use Terraform 1.11+ write-only arguments (*_wo), so secrets reach Coder but never land in state. Each secret is paired with a *_version field; bumping the version rotates the secret. A null version means "unmanaged/preserve" rather than "clear", so removing it never silently wipes server-side secrets.
  • Split validation. Schema validators handle the simple shape (required-together, non-empty); resource-level ValidateConfig handles type-dependent combinations (e.g. api_key_wo is rejected for bedrock/copilot or any settings.bedrock config, mirroring the server) and Bedrock's region-or-credentials requirement. Validation defers while values are unknown during the validate/plan walk.
  • Bedrock region. When region is omitted it derives from a canonical Bedrock base_url (bedrock-runtime.<region>.amazonaws.com), so it re-derives correctly when base_url changes regions.

Schema

resource "coderd_ai_provider" "openai" {
  type               = "openai"
  name               = "openai"
  base_url           = "https://api.openai.com"
  api_key_wo         = var.openai_api_key
  api_key_wo_version = 1
}

resource "coderd_ai_provider" "bedrock" {
  type     = "bedrock"
  name     = "aws-bedrock"
  base_url = "https://bedrock-runtime.us-east-1.amazonaws.com"

  settings = {
    bedrock = {
      model                  = "anthropic.claude-3-5-sonnet-20241022-v2:0"
      access_key_wo          = var.bedrock_access_key
      access_key_secret_wo   = var.bedrock_access_key_secret
      credentials_wo_version = 1
    }
  }
}

Computed: id, display_name, enabled, api_key_masked, created_at, updated_at, and settings.bedrock.region (derived from base_url).

Notes

Requires Terraform 1.11+ when configured (write-only arguments); acceptance cases skip earlier versions.

An integration test combining this with the model resource is planned.

Relates to CODAGT-607

@linear-code

linear-code Bot commented Jun 23, 2026

Copy link
Copy Markdown

CODAGT-607

@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from 7c12298 to 844cbf5 Compare June 23, 2026 05:46
@ethanndickson

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2dde8c9a39

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread internal/provider/ai_provider_resource_test.go
@ethanndickson ethanndickson changed the title Add experimental AI provider resource feat: add experimental AI provider resource Jun 23, 2026
@ethanndickson

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 891e3b5e17

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread internal/provider/ai_provider_resource.go
@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch 2 times, most recently from b8ee453 to 3ca1539 Compare June 23, 2026 06:59
@ethanndickson

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3ca1539a17

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread internal/provider/ai_provider_resource.go
@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from 28abf98 to 4e28632 Compare June 23, 2026 07:27
@ethanndickson

Copy link
Copy Markdown
Member Author

@codex review

re:

Accept Bedrock custom endpoints with default credentials
Honor full Bedrock base URLs without a region

Verified this against coder/coder at current main — the premise is correct, but loosening only the provider here wouldn't actually unblock proxy deployments, so I'm holding off.

The provider is faithfully mirroring the server's create gate. CreateAIProviderRequest.Validate() in codersdk/aiproviders.go rejects type=bedrock when req.Settings.Bedrock == nil || !req.Settings.Bedrock.IsConfigured() — and IsConfigured() only checks region + credentials, ignoring base_url, exactly like this check. The create handler (coderd/ai_providers.go) calls that same Validate(), so a base-URL-only Bedrock provider (AWS SDK default credential chain, no region) currently returns an HTTP 400 from Coder regardless of what Terraform does.

The base-URL-aware IsBedrockConfigured(baseURL, settings) does exist, but it's only used by legacy env-var seeding (cli/server.go) and migration detection (coderd/ai_providers_migrate.go) — never in the create/update API validation path.

So if I switch this check to be base-URL-aware in isolation, the apply still fails — just with a server-side 400 instead of a clean client-side diagnostic, which is worse UX. This is an inconsistency in Coder itself between the Bedrock docs and CreateAIProviderRequest.Validate(). The right fix is upstream: have CreateAIProviderRequest.Validate() use IsBedrockConfigured(baseURL, ...) (or correct the docs). Once the API accepts base-URL-only Bedrock, I'll mirror it here

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4e28632a3c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread internal/provider/ai_provider_resource.go
@ethanndickson ethanndickson self-assigned this Jun 23, 2026
@ethanndickson ethanndickson changed the base branch from main to graphite-base/368 June 24, 2026 04:57
@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from 78ae1a4 to 1cf58fc Compare June 24, 2026 04:57
@ethanndickson ethanndickson changed the base branch from graphite-base/368 to ethan/ci-embedded-pg-fix June 24, 2026 04:57

ethanndickson commented Jun 24, 2026

Copy link
Copy Markdown
Member Author

@ethanndickson

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ee995a996b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread internal/provider/ai_provider_resource.go
@ethanndickson

Copy link
Copy Markdown
Member Author

@codex review

re:

Accept Bedrock custom endpoints with default credentials
Honor full Bedrock base URLs without a region

Verified this against coder/coder at current main — the premise is correct, but loosening only the provider here wouldn't actually unblock proxy deployments, so I'm holding off.

The provider is faithfully mirroring the server's create gate. CreateAIProviderRequest.Validate() in codersdk/aiproviders.go rejects type=bedrock when req.Settings.Bedrock == nil || !req.Settings.Bedrock.IsConfigured() — and IsConfigured() only checks region + credentials, ignoring base_url, exactly like this check. The create handler (coderd/ai_providers.go) calls that same Validate(), so a base-URL-only Bedrock provider (AWS SDK default credential chain, no region) currently returns an HTTP 400 from Coder regardless of what Terraform does.

The base-URL-aware IsBedrockConfigured(baseURL, settings) does exist, but it's only used by legacy env-var seeding (cli/server.go) and migration detection (coderd/ai_providers_migrate.go) — never in the create/update API validation path.

So if I switch this check to be base-URL-aware in isolation, the apply still fails — just with a server-side 400 instead of a clean client-side diagnostic, which is worse UX. This is an inconsistency in Coder itself between the Bedrock docs and CreateAIProviderRequest.Validate(). The right fix is upstream: have CreateAIProviderRequest.Validate() use IsBedrockConfigured(baseURL, ...) (or correct the docs). Once the API accepts base-URL-only Bedrock, I'll mirror it here

@ethanndickson

Copy link
Copy Markdown
Member Author

/coder-agents-review

@coder-agents-review

coder-agents-review Bot commented Jun 24, 2026

Copy link
Copy Markdown

Chat: Review posted | View chat
Requested: 2026-06-24 07:59 UTC by @ethanndickson
Spend: $71.85 / $100.00

Review history
  • R1 (2026-06-24): 14 reviewers, 2 Nit, 4 Note, 4 P2, 6 P3, COMMENT. Review
  • R2 (2026-06-24): 6 reviewers, 4 Nit, 4 Note, 5 P2, 8 P3, COMMENT. Review
  • R3 (2026-06-24): 3 reviewers, 4 Nit, 4 Note, 5 P2, 8 P3, APPROVE. Review

deep-review v0.9.0 | Round 3 | 293eac1..d51dad0

Last posted: Round 3, 21 findings (5 P2, 8 P3, 4 Nit, 4 Note), APPROVE. Review

Finding inventory

Finding Inventory

Findings

# Sev Status Location Summary Round Reviewer Posted
CRF-1 P2 Author fixed (1ee8a77) ai_provider_resource.go:166 UseStateForUnknown on region causes plan/apply inconsistency when base_url changes R1 Hisoka P2, Kite P2 Yes
CRF-2 P2 Author fixed (1ee8a77) ai_provider_resource.go:485 Removing api_key_wo_version silently clears all API keys R1 Hisoka P2, Mafuuu P3, Knov P3 Yes
CRF-3 P2 Author fixed (1ee8a77) ai_provider_resource.go:611 Removing credentials_wo_version permanently blocks apply R1 Chopper P2, Meruem P3 Yes
CRF-4 P2 Author fixed (1ee8a77) ai_provider_resource_test.go:397 Shallow copy shares Settings pointer, test verifies wrong preconditions R1 Meruem P2, Bisky Nit Yes
CRF-5 P3 Author fixed (1ee8a77) ai_provider_resource_test.go:382 Bedrock credential rotation/clearing/error paths untested R1 Bisky P3, Chopper P3, Kite P3 Yes
CRF-6 P3 Author fixed (1ee8a77) ai_provider_resource.go:543 stateFromProvider nil Settings for non-bedrock causes infinite plan diffs with settings={} R1 Mafuuu P3 Yes
CRF-7 P3 Author fixed (1ee8a77) ai_provider_resource.go:186 Doc link pinned to v2.34.3 will rot R1 Leorio P3 Yes
CRF-8 P3 Author fixed (1ee8a77) ai_provider_resource_test.go:125 ValidateConfig type-specific error branches untested R1 Kite P3 Yes
CRF-9 P3 Author fixed (1ee8a77) ai_provider_resource.go:485 API key clearing semantic undocumented and untested R1 Chopper P3, Knov P3 Yes
CRF-10 P3 Author fixed (1ee8a77) ai_provider_resource.go:245 Comment verbosity pattern: 9 of 10 comments restate adjacent code R1 Gon P2 (downgraded) Yes
CRF-11 Nit Author fixed (1ee8a77) ai_provider_resource.go:611 credentialsVersionChanged uses symmetric param names for asymmetric function R1 Gon Nit Yes
CRF-12 Nit Author accepted R2 (intentional reuse of shared helper) ai_provider_resource.go:306 bedrockRegion called with identical args for configured and planned in ValidateConfig R1 Mafuuu Nit, Meruem Note Yes
CRF-13 Note Author accepted R2 (deferred; bedrock unit-tested, server integration gap noted) ai_provider_resource_test.go:30 Acceptance test only covers OpenAI import/rotation, not bedrock lifecycle R1 Bisky Note Yes
CRF-14 Note Author fixed (1ee8a77) ai_provider_resource.go:580 parseBedrockRegionFromBaseURL only tested indirectly R1 Kite Note Yes
CRF-15 Note Author accepted R2 (deferred; SDK has same gap, admin-only field) ai_provider_resource.go:588 base_url accepts URLs with embedded userinfo R1 Kurapika Note Yes
CRF-16 Note Author accepted R2 (intentional; matches SDK Validate() behavior) ai_provider_resource.go:296 Bedrock validation depth differs by provider type (matches SDK) R1 Knov Note Yes
CRF-17 P2 Author fixed (d51dad0) ai_provider_resource.go:164 CRF-1 fix incomplete: region without plan modifier causes plan noise and potential plan/apply divergence R2 Hisoka P2, Meruem P3 Yes
CRF-18 P3 Author fixed (d51dad0) ai_provider_resource.go:215 created_at missing UseStateForUnknown; shows (known after apply) on every update R2 Mafuuu P3 Yes
CRF-19 P3 Author fixed (d51dad0) ai_provider_resource_test.go:504 Bedrock credential rotation happy path test uses empty strings; field correctness unverified R2 Bisky P3 Yes
CRF-20 Nit Author fixed (d51dad0) ai_provider_resource_test.go:549 Four API key rotation scenarios in flat function without t.Run subtests R2 Bisky Nit Yes
CRF-21 Nit Author fixed (d51dad0) ai_provider_resource.go:586 APIKeys[0] index undocumented single-key invariant R2 Hisoka Nit Yes

Law analysis

Effective LOC: 1222. Head SHA: d2f68e3. Verdict: Don't split. Enforcement: Advisory.

Round log

Round 1

Panel. 4 P2, 6 P3, 2 Nit, 4 Note. 16 posted. Reviewed against 293eac1..d2f68e3. Panel: Bisky, Hisoka, Mafu-san, Mafuuu, Pariston, Gon, Leorio, Ging-Go, Kurapika, Chopper, Komugi, Meruem, Kite (wildcard), Knov (wildcard). Netero clean, Law advisory don't-split.

Round 2

Churn guard: PROCEED (12 addressed, 4 acknowledged). Netero clean, all R1 fixes verified. Panel: Bisky, Mafuuu, Hisoka, Chopper, Meruem, Knov (wildcard). 1 P2, 2 P3, 2 Nit new. Reviewed against 293eac1..1ee8a77.

Round 3

Churn guard: PROCEED (5 addressed). Netero clean, all R2 fixes verified. Panel: Mafuuu, Hisoka, Meruem. 0 new findings. All 21 findings resolved (17 fixed, 4 acknowledged). Reviewed against 293eac1..d51dad0.

About deep-review

CRF = Coder Review Finding (P0-P4, Nit, Note)

Reviewer Focus
Bisky tests
Chopper ops/errors
Churn-guard change verification
Ging language modernization
Gon naming
Hisoka edge cases
Killua perf
Kite change integrity
Knov contracts
Knuckle SQL
Komugi flake/determinism
Kurapika security
Law decomposition
Leorio docs
Luffy product
Mafu-san process
Mafuuu contracts
Melody dispatch/pairing
Meruem structural
Nami frontend
Netero mechanical checks
Pariston premise testing
Pen-botter product gaps
Razor verification
Robin duplication
Ryosuke Go arch
Takumi concurrency
Zoro shape

🤖 Managed by Coder Agents.

@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from d51dad0 to b1d81a3 Compare June 24, 2026 08:10
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: d51dad0c80

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@coder-agents-review coder-agents-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 21 findings across 3 rounds resolved: 17 fixed, 4 acknowledged. No new findings from the R3 panel (Mafuuu, Hisoka, Meruem) or Netero.

The R2 fixes are solid. bedrockRegionPlanModifier correctly derives region from base_url during planning, eliminating both the stale-state and plan-noise variants. created_at now has UseStateForUnknown. Credential rotation test uses distinct non-empty values. API key rotation test uses t.Run subtests. Single-key invariant is documented.

CI note: Terraform Provider Acceptance Tests (1.6.*) is failing. This may be pre-existing or related to the base branch (#370). Worth checking before merge.

The resource is well-engineered: clean write-only secret handling, thoughtful validation deferral for unknowns, proper credential lifecycle semantics, and thorough test coverage (45.8% test density, 1:1 production-to-test ratio).

🤖 This review was automatically generated with Coder Agents.

Comment thread docs/resources/experimental_ai_provider.md Outdated
Comment thread docs/resources/ai_provider.md

@matifali matifali left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have concerns about the choice of the name for this resource.

@ethanndickson

ethanndickson commented Jun 24, 2026

Copy link
Copy Markdown
Member Author

Yeah honestly I agree, I think putting experimental in the title is a mistake. It'll be extremely painful for customers to migrate when we remove it.

@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from b1d81a3 to 6221b88 Compare June 24, 2026 12:32
@ethanndickson ethanndickson force-pushed the ethan/ci-embedded-pg-fix branch from a3b1745 to 936dab2 Compare June 24, 2026 12:32
@ethanndickson ethanndickson changed the title feat: add experimental AI provider resource feat: add coderd_ai_provider resource Jun 24, 2026
@ethanndickson ethanndickson changed the title feat: add coderd_ai_provider resource feat: add experimental coderd_ai_provider resource Jun 24, 2026
@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from c4c0db1 to a97aba5 Compare June 24, 2026 14:41
@ethanndickson ethanndickson changed the base branch from ethan/ci-embedded-pg-fix to graphite-base/368 June 24, 2026 14:41
ethanndickson added a commit that referenced this pull request Jun 24, 2026
> **Stack** — base PR; #368 (experimental AI provider resource) builds on this.

## Problem

The Terraform acceptance matrix was failing intermittently across all lanes with `coder failed to become ready in time`.

`integration.StartCoder` boots `ghcr.io/coder/coder` without `CODER_PG_CONNECTION_URL`, so Coder falls back to its embedded PostgreSQL. The image doesn't bundle the Postgres binary, so each startup downloads the embedded-postgres jar from Maven Central. GitHub runners' shared egress IPs get rate-limited by Cloudflare, and a single non-200 crashes Coder before it binds — reddening the lane.

## Fix

Give Coder a real PostgreSQL instead of the embedded one. Setting `CODER_PG_CONNECTION_URL` bypasses the Maven download entirely. Per test, `integration.StartCoder` now starts a Postgres sidecar on a user-defined Docker network (aliased `postgres`), wires Coder onto it, and points `CODER_PG_CONNECTION_URL` at it. No readiness wait needed — Coder retries its DB connection for ~30s, covering sidecar boot.

The image is `us-docker.pkg.dev/coder-v2-images-public/public/postgres:17`, the public mirror coder/coder uses in its own tests, which avoids Docker Hub's anonymous pull rate limit.

This is environment-level, so it also covers the version-pinned back-compat tests. CI wall time is essentially unchanged (~206s/lane): the Postgres pull and boot costs about what the Maven download it replaces did.

## Also: raise the Terraform support floor to 1.5

Terraform 1.0–1.4 are EOL. This drops them from the CI matrix (now `1.5.*`–`1.14.*`, so we also test the latest releases), sets the README floor to `>= 1.5`, and removes the `template_resource_test.go` skip guard for a Terraform 1.0 panic.
Adds a Terraform resource for declarative Coder AI provider configuration,
supporting all SDK provider types with AWS Bedrock and API-key providers.
Secrets use Terraform 1.11+ write-only arguments and are never stored in
state.
@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from a97aba5 to 839989b Compare June 24, 2026 14:42
@graphite-app graphite-app Bot changed the base branch from graphite-base/368 to main June 24, 2026 14:42
@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from 839989b to 0d0e3b8 Compare June 24, 2026 14:42

### Optional

> **NOTE**: [Write-only arguments](https://developer.hashicorp.com/terraform/language/resources/ephemeral#write-only-arguments) are supported in Terraform 1.11 and later.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
> **NOTE**: [Write-only arguments](https://developer.hashicorp.com/terraform/language/resources/ephemeral#write-only-arguments) are supported in Terraform 1.11 and later.
-> [Write-only arguments](https://developer.hashicorp.com/terraform/language/resources/ephemeral#write-only-arguments) are supported in Terraform 1.11 and later.

This could also turn into a Terraform registry-style note.

Image Preview from: https://registry.terraform.io/tools/doc-preview

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's already one at the top, I'm going to get rid of it

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nevermind, it's auto-generated and you can't get rid of or edit it.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incredible.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the block at the top saying the whole resource requires 1.11 or later is worth keeping, so keeping both unfortunately.

@matifali matifali Jun 24, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes we can drop this block and keep the top only.

@ethanndickson ethanndickson Jun 24, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

> **NOTE**: [Write-only arguments](https://developer.hashicorp.com/terraform/language/resources/ephemeral#write-only-arguments) are supported in Terraform 1.11 and later.

You can't get rid of this, it's added by the docs generator.

@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from 0d0e3b8 to de42560 Compare June 24, 2026 15:08
@ethanndickson ethanndickson force-pushed the ethan/ai-provider-resource branch from de42560 to 2e2abe6 Compare June 24, 2026 15:15
name = "openai"
display_name = "OpenAI"
enabled = true
base_url = "https://api.openai.com"

@ethanndickson ethanndickson Jun 24, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to future self to investigate: does coderd handle omitting the /v1 for openAI base urls? otherwise we should probably catch this during validation/plan

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