Skip to content

fix(anthropic): honor ANTHROPIC_BASE_URL when no baseUrl is configured#74432

Closed
sunapi386 wants to merge 2 commits into
openclaw:mainfrom
aceteam-ai:fix/anthropic-base-url-env
Closed

fix(anthropic): honor ANTHROPIC_BASE_URL when no baseUrl is configured#74432
sunapi386 wants to merge 2 commits into
openclaw:mainfrom
aceteam-ai:fix/anthropic-base-url-env

Conversation

@sunapi386

Copy link
Copy Markdown

Summary

Two helpers in src/agents fall back to a hardcoded https://api.anthropic.com when no baseUrl is supplied:

  • resolveAnthropicMessagesUrl in src/agents/anthropic-transport-stream.ts:474 — used by every streaming Anthropic call
  • The native-PDF tool in src/agents/tools/pdf-native-providers.ts:65 — used by Anthropic's PDF document tool

Both silently ignore ANTHROPIC_BASE_URL, so users running OpenClaw behind an Anthropic-compatible proxy (LiteLLM, vLLM, local gateway) see calls hit api.anthropic.com directly even when the env var is set.

The fix adds ANTHROPIC_BASE_URL to the existing precedence chain:

explicit baseUrlANTHROPIC_BASE_URLhttps://api.anthropic.com

This mirrors what the Anthropic Node SDK already does and matches the OpenAI counterpart PR (#74427) and the merged whisper precedent (#55597).

Backwards compatibility

Explicit baseUrl still takes precedence:

User has Before After
Nothing api.anthropic.com api.anthropic.com (unchanged)
model.baseUrl set (e.g. via provider config) their value their value (unchanged)
Only ANTHROPIC_BASE_URL env var api.anthropic.com (silent ignore) env var honored
Both env var and explicit baseUrl explicit explicit (unchanged)

Test plan

  • Exported resolveAnthropicMessagesUrl so the precedence chain is unit-testable.
  • Added 4 new test cases in anthropic-transport-stream.test.ts covering: explicit wins over env, env fallback for empty/whitespace baseUrl, default fallback when neither is set.
  • pnpm test -- src/agents/anthropic-transport-stream.test.ts → 25/25 pass (21 existing + 4 new).
  • CI run on upstream main.

Related

Two helpers in src/agents fall back to a hardcoded "https://api.anthropic.com"
when no baseUrl is supplied — the messages stream URL builder
(anthropic-transport-stream.ts:474) and the native-PDF tool fetch
(tools/pdf-native-providers.ts:65). Both silently ignore ANTHROPIC_BASE_URL,
so users running OpenClaw behind an Anthropic-compatible proxy see calls
hit api.anthropic.com directly even when the env var is set.

The fix adds env-var fallback to the existing precedence chain:
explicit baseUrl > ANTHROPIC_BASE_URL > "https://api.anthropic.com".
Mirrors what the Anthropic Node SDK does and matches the OpenAI counterpart
PR (openclaw#74427).

Exports resolveAnthropicMessagesUrl from anthropic-transport-stream.ts so
the precedence is unit-testable; the inline pdf-native-providers fix uses
the same chain.

Backwards-compat: explicit baseUrl still wins, so users with config-set
or runtime-passed baseUrl see no change.
@openclaw-barnacle openclaw-barnacle Bot added agents Agent runtime and tooling size: S labels Apr 29, 2026
@greptile-apps

greptile-apps Bot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds ANTHROPIC_BASE_URL env-var support to the two Anthropic call sites that previously hardcoded api.anthropic.com. The resolveAnthropicMessagesUrl function and its new tests are correct. However, the pdf-native-providers.ts implementation uses ?? instead of || to chain the env var, which means a whitespace-only ANTHROPIC_BASE_URL bypasses the default and produces an invalid fetch URL.

Confidence Score: 3/5

Not safe to merge as-is — whitespace-only ANTHROPIC_BASE_URL will cause silent fetch failures in anthropicAnalyzePdf.

One P1 logic bug in pdf-native-providers.ts where ?? vs || causes a whitespace env var to produce an empty base URL. The fix is a one-line change. The rest of the PR (stream transport, tests) is correct and well-covered.

src/agents/tools/pdf-native-providers.ts — ?? operator bug on lines 65–69

Prompt To Fix All With AI
This is a comment left during a code review.
Path: src/agents/tools/pdf-native-providers.ts
Line: 65-69

Comment:
**Whitespace-only `ANTHROPIC_BASE_URL` bypasses the default fallback**

`??` only guards against `null`/`undefined`, not empty strings. When `ANTHROPIC_BASE_URL` is set to whitespace (e.g. `"   "`), `process.env.ANTHROPIC_BASE_URL?.trim()` returns `""` — which is not nullish — so `"" ?? "https://api.anthropic.com"` evaluates to `""`. The resulting `fetch` URL becomes `"/v1/messages"` (a relative path), which will fail at runtime.

`resolveAnthropicMessagesUrl` handles this correctly with `||` (falsy check), but this site uses `??`. The fix is to match the same pattern:

```suggestion
  const baseUrl = (
    params.baseUrl ||
    process.env.ANTHROPIC_BASE_URL?.trim() ||
    "https://api.anthropic.com"
  ).replace(/\/+$/, "");
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: src/agents/tools/pdf-native-providers.ts
Line: 70

Comment:
**`/v1` suffix not handled, unlike `resolveAnthropicMessagesUrl`**

`resolveAnthropicMessagesUrl` checks `normalized.endsWith("/v1")` and avoids doubling the segment. This site always appends `/v1/messages`, so if `ANTHROPIC_BASE_URL` is `"https://proxy.example.com/v1"`, the call will go to `/v1/v1/messages`. Pre-existing issue, but now surfaced by the env-var path being live. Consider extracting the shared URL-building logic into `resolveAnthropicMessagesUrl` (or a sibling) and reusing it here.

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "fix(anthropic): honor ANTHROPIC_BASE_URL..." | Re-trigger Greptile

Comment on lines +65 to +69
const baseUrl = (
params.baseUrl ??
process.env.ANTHROPIC_BASE_URL?.trim() ??
"https://api.anthropic.com"
).replace(/\/+$/, "");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 Whitespace-only ANTHROPIC_BASE_URL bypasses the default fallback

?? only guards against null/undefined, not empty strings. When ANTHROPIC_BASE_URL is set to whitespace (e.g. " "), process.env.ANTHROPIC_BASE_URL?.trim() returns "" — which is not nullish — so "" ?? "https://api.anthropic.com" evaluates to "". The resulting fetch URL becomes "/v1/messages" (a relative path), which will fail at runtime.

resolveAnthropicMessagesUrl handles this correctly with || (falsy check), but this site uses ??. The fix is to match the same pattern:

Suggested change
const baseUrl = (
params.baseUrl ??
process.env.ANTHROPIC_BASE_URL?.trim() ??
"https://api.anthropic.com"
).replace(/\/+$/, "");
const baseUrl = (
params.baseUrl ||
process.env.ANTHROPIC_BASE_URL?.trim() ||
"https://api.anthropic.com"
).replace(/\/+$/, "");
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/agents/tools/pdf-native-providers.ts
Line: 65-69

Comment:
**Whitespace-only `ANTHROPIC_BASE_URL` bypasses the default fallback**

`??` only guards against `null`/`undefined`, not empty strings. When `ANTHROPIC_BASE_URL` is set to whitespace (e.g. `"   "`), `process.env.ANTHROPIC_BASE_URL?.trim()` returns `""` — which is not nullish — so `"" ?? "https://api.anthropic.com"` evaluates to `""`. The resulting `fetch` URL becomes `"/v1/messages"` (a relative path), which will fail at runtime.

`resolveAnthropicMessagesUrl` handles this correctly with `||` (falsy check), but this site uses `??`. The fix is to match the same pattern:

```suggestion
  const baseUrl = (
    params.baseUrl ||
    process.env.ANTHROPIC_BASE_URL?.trim() ||
    "https://api.anthropic.com"
  ).replace(/\/+$/, "");
```

How can I resolve this? If you propose a fix, please make it concise.

process.env.ANTHROPIC_BASE_URL?.trim() ??
"https://api.anthropic.com"
).replace(/\/+$/, "");
const res = await fetch(`${baseUrl}/v1/messages`, {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 /v1 suffix not handled, unlike resolveAnthropicMessagesUrl

resolveAnthropicMessagesUrl checks normalized.endsWith("/v1") and avoids doubling the segment. This site always appends /v1/messages, so if ANTHROPIC_BASE_URL is "https://proxy.example.com/v1", the call will go to /v1/v1/messages. Pre-existing issue, but now surfaced by the env-var path being live. Consider extracting the shared URL-building logic into resolveAnthropicMessagesUrl (or a sibling) and reusing it here.

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/agents/tools/pdf-native-providers.ts
Line: 70

Comment:
**`/v1` suffix not handled, unlike `resolveAnthropicMessagesUrl`**

`resolveAnthropicMessagesUrl` checks `normalized.endsWith("/v1")` and avoids doubling the segment. This site always appends `/v1/messages`, so if `ANTHROPIC_BASE_URL` is `"https://proxy.example.com/v1"`, the call will go to `/v1/v1/messages`. Pre-existing issue, but now surfaced by the env-var path being live. Consider extracting the shared URL-building logic into `resolveAnthropicMessagesUrl` (or a sibling) and reusing it here.

How can I resolve this? If you propose a fix, please make it concise.

@clawsweeper

clawsweeper Bot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed May 30, 2026, 12:57 AM ET / 04:57 UTC.

Summary
Review failed before ClawSweeper could summarize the requested change.

PR surface: Source +16, Tests +49. Total +65 across 3 files.

Reproducibility: unclear. The review failed before ClawSweeper could establish a reproduction path.

Review metrics: none identified.

Merge readiness
Overall: 🌊 off-meta tidepool
Proof: 🌊 off-meta tidepool
Patch quality: 🌊 off-meta tidepool
Result: rating does not apply to this item.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Risk before merge

  • [P1] No close action taken because the review did not complete.

Maintainer options:

  1. Decide the mitigation before merge
    Retry the Codex review after fixing the execution failure.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P1] Review did not complete, so no work-lane recommendation was made.
Review details

Best possible solution:

Retry the Codex review after fixing the execution failure.

Do we have a high-confidence way to reproduce the issue?

Unclear. The review failed before ClawSweeper could establish a reproduction path.

Is this the best way to solve the issue?

Unclear. Retry the review first so ClawSweeper can evaluate the actual issue and fix direction.

AGENTS.md: unclear because the file could not be read completely.

Codex review notes: model gpt-5.5, reasoning high; reviewed against b352cb2d8e7f.

Label changes

Label justifications:

  • rating: 🌊 off-meta tidepool: Overall readiness is 🌊 off-meta tidepool; proof is 🌊 off-meta tidepool and patch quality is 🌊 off-meta tidepool.
Evidence reviewed

PR surface:

Source +16, Tests +49. Total +65 across 3 files.

View PR surface stats
Area Files Added Removed Net
Source 2 20 4 +16
Tests 1 49 0 +49
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 3 69 4 +65

What I checked:

  • failure reason: codex execution failed.
  • codex failure detail: Codex review failed for this PR with exit 1.

Likely related people:

  • unknown: Codex failed before it could trace repository history. (role: review did not complete; confidence: low)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

Greptile flagged two issues with the inline URL build:

P1 (real bug): the chain used `??` instead of `||`, so a whitespace-only
ANTHROPIC_BASE_URL trimmed to "" passed nullish-checks and produced a
relative `/v1/messages` URL that fetch() can't resolve.

P2 (pre-existing): the inline path always appended `/v1/messages`, so a
proxy URL ending in `/v1` (common with LiteLLM) would hit `/v1/v1/messages`.

Both fixed by reusing the canonical resolveAnthropicMessagesUrl helper —
single precedence chain, single `/v1` suffix logic, no duplication.
@clawsweeper

clawsweeper Bot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs changes before merge.

What this changes:

The PR exports an Anthropic Messages URL resolver that falls back from explicit baseUrl to ANTHROPIC_BASE_URL to the public Anthropic endpoint, adds resolver tests, and makes the native PDF Anthropic request use that resolver.

Required change before merge:

This is a narrow, valid provider-routing PR with a concrete remaining repair: add PDF-specific regression coverage and, if desired, extract the resolver to a small shared helper. No product, release, or security-policy decision is required before attempting that repair.

Review details

Best possible solution:

Land the provider-routing fix after adding native PDF regression tests and confirming the shared URL helper is in an acceptable module boundary. The shipped behavior should preserve explicit baseUrl precedence, honor non-empty ANTHROPIC_BASE_URL, avoid duplicate /v1, and keep the default Anthropic endpoint unchanged when neither is set.

Acceptance criteria:

  • pnpm test src/agents/anthropic-transport-stream.test.ts src/agents/tools/pdf-native-providers.test.ts
  • pnpm exec oxfmt --check --threads=1 src/agents/anthropic-transport-stream.ts src/agents/anthropic-transport-stream.test.ts src/agents/tools/pdf-native-providers.ts src/agents/tools/pdf-native-providers.test.ts CHANGELOG.md
  • pnpm check:changed in Blacksmith Testbox before handoff

What I checked:

  • Current main streaming fallback ignores env: resolveAnthropicMessagesUrl on current main only trims the explicit baseUrl and otherwise falls back to https://api.anthropic.com; createAnthropicMessagesClient uses that helper for the streaming request URL. (src/agents/anthropic-transport-stream.ts:473, 8935dd154a95)
  • Current main native PDF fallback ignores env: anthropicAnalyzePdf still computes params.baseUrl ?? "https://api.anthropic.com" and fetches ${baseUrl}/v1/messages; pdf-tool passes model.baseUrl into that path. (src/agents/tools/pdf-native-providers.ts:65, 8935dd154a95)
  • Upstream dependency contract supports env fallback: The repo pins @anthropic-ai/sdk 0.91.1. The package tarball's client.js constructor defaults baseURL from readEnv('ANTHROPIC_BASE_URL') and then uses baseURL || "https://api.anthropic.com"; readEnv trims whitespace and returns undefined for empty values. (pnpm-lock.yaml:8, 8935dd154a95)
  • Latest PR head shares URL normalization: The latest diff exports resolveAnthropicMessagesUrl(baseUrl, env = process.env), uses explicit/env/default precedence, preserves /v1 suffix handling, and changes the native PDF request to fetch the resolver URL. (src/agents/anthropic-transport-stream.ts:473, 33b444d7c8d5)
  • Remaining coverage gap: Current PDF tests cover default shape, errors, multiple PDFs, and explicit custom base URL, but not ANTHROPIC_BASE_URL, whitespace env fallback, or env values ending in /v1 for anthropicAnalyzePdf. The PR diff adds resolver tests only. (src/agents/tools/pdf-native-providers.test.ts:195, 8935dd154a95)
  • Security-sensitive diff review: The PR diff is limited to src/agents/anthropic-transport-stream.ts, src/agents/anthropic-transport-stream.test.ts, and src/agents/tools/pdf-native-providers.ts; it does not change workflows, dependencies, lockfiles, package scripts, publishing metadata, generated/vendor files, or secret storage. The new routing source is an operator-controlled environment variable matching the pinned SDK contract. (33b444d7c8d5)

Likely related people:

  • @steipete: Current main blame for both hardcoded Anthropic URL paths points to 390a7598, which created src/agents/anthropic-transport-stream.ts, src/agents/tools/pdf-native-providers.ts, and src/agents/tools/pdf-tool.ts. (role: introduced current behavior and recent maintainer; confidence: high; commits: 390a7598c952; files: src/agents/anthropic-transport-stream.ts, src/agents/tools/pdf-native-providers.ts, src/agents/tools/pdf-tool.ts)
  • jacky: Local history shows a recent merged Anthropic transport change and tests in 0544c6d4, so this person is relevant for transport-stream regression coverage and review context, though not for the original base URL fallback. (role: recent adjacent maintainer; confidence: medium; commits: 0544c6d493ff; files: src/agents/anthropic-transport-stream.ts, src/agents/anthropic-transport-stream.test.ts)

Remaining risk / open question:

  • The latest PR head still lacks direct anthropicAnalyzePdf regression tests for ANTHROPIC_BASE_URL, whitespace-only env fallback, and env URLs already ending in /v1.
  • The PR adds a static import from the native PDF provider to the Anthropic stream module; if maintainers prefer a tighter module boundary, the resolver should be extracted to a small shared helper instead.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 8935dd154a95.

@openclaw-barnacle

Copy link
Copy Markdown

This pull request has been automatically marked as stale due to inactivity.
Please add updates or it will be closed.

@openclaw-barnacle openclaw-barnacle Bot added stale Marked as stale due to inactivity triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 30, 2026
@clawsweeper clawsweeper Bot added the rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. label May 30, 2026
@barnacle-openclaw barnacle-openclaw Bot removed the stale Marked as stale due to inactivity label May 30, 2026
steipete added a commit that referenced this pull request Jun 2, 2026
Repairs a batch of narrow model/provider edge cases:

- honor OpenAI and Anthropic base URL environment overrides when provider config does not set an explicit base URL
- preserve OpenRouter Anthropic cache retention while stripping unsupported transport options
- allow apply_patch for non-OpenAI providers when the tool config otherwise permits it
- prune stale same-provider model selections from configure/model picker state
- expose GitHub Copilot bundled thinking policy metadata to offline/provider-policy lookups
- repair additive SQLite shared-state upgrades for existing databases
- keep same-size rotated log readers from reusing stale content in CI tooling

Proof:

- GitHub PR checks green on exact head 4651490
- Crabbox delegated Blacksmith Testbox tbx_01kt3em5r9vd7g0bnykrff6jdk exited 0
- Focused local Vitest/oxlint/format proof recorded in PR body and land-ready comment

Fixes #80347.
Fixes #88357.
Fixes #45269.
Supersedes #74427, #74432, #79370, #79894, #80366, and #88359.
@steipete

steipete commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Thanks for the PR. I landed the current-source version of this fix in #89347 / commit 732d697, with exact-head CI and focused provider/model proof recorded there.

Closing this as superseded by the merged maintainer batch.

@steipete steipete closed this Jun 2, 2026
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 3, 2026
Repairs a batch of narrow model/provider edge cases:

- honor OpenAI and Anthropic base URL environment overrides when provider config does not set an explicit base URL
- preserve OpenRouter Anthropic cache retention while stripping unsupported transport options
- allow apply_patch for non-OpenAI providers when the tool config otherwise permits it
- prune stale same-provider model selections from configure/model picker state
- expose GitHub Copilot bundled thinking policy metadata to offline/provider-policy lookups
- repair additive SQLite shared-state upgrades for existing databases
- keep same-size rotated log readers from reusing stale content in CI tooling

Proof:

- GitHub PR checks green on exact head 4651490
- Crabbox delegated Blacksmith Testbox tbx_01kt3em5r9vd7g0bnykrff6jdk exited 0
- Focused local Vitest/oxlint/format proof recorded in PR body and land-ready comment

Fixes openclaw#80347.
Fixes openclaw#88357.
Fixes openclaw#45269.
Supersedes openclaw#74427, openclaw#74432, openclaw#79370, openclaw#79894, openclaw#80366, and openclaw#88359.
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
Repairs a batch of narrow model/provider edge cases:

- honor OpenAI and Anthropic base URL environment overrides when provider config does not set an explicit base URL
- preserve OpenRouter Anthropic cache retention while stripping unsupported transport options
- allow apply_patch for non-OpenAI providers when the tool config otherwise permits it
- prune stale same-provider model selections from configure/model picker state
- expose GitHub Copilot bundled thinking policy metadata to offline/provider-policy lookups
- repair additive SQLite shared-state upgrades for existing databases
- keep same-size rotated log readers from reusing stale content in CI tooling

Proof:

- GitHub PR checks green on exact head 4651490
- Crabbox delegated Blacksmith Testbox tbx_01kt3em5r9vd7g0bnykrff6jdk exited 0
- Focused local Vitest/oxlint/format proof recorded in PR body and land-ready comment

Fixes openclaw#80347.
Fixes openclaw#88357.
Fixes openclaw#45269.
Supersedes openclaw#74427, openclaw#74432, openclaw#79370, openclaw#79894, openclaw#80366, and openclaw#88359.
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Repairs a batch of narrow model/provider edge cases:

- honor OpenAI and Anthropic base URL environment overrides when provider config does not set an explicit base URL
- preserve OpenRouter Anthropic cache retention while stripping unsupported transport options
- allow apply_patch for non-OpenAI providers when the tool config otherwise permits it
- prune stale same-provider model selections from configure/model picker state
- expose GitHub Copilot bundled thinking policy metadata to offline/provider-policy lookups
- repair additive SQLite shared-state upgrades for existing databases
- keep same-size rotated log readers from reusing stale content in CI tooling

Proof:

- GitHub PR checks green on exact head 4651490
- Crabbox delegated Blacksmith Testbox tbx_01kt3em5r9vd7g0bnykrff6jdk exited 0
- Focused local Vitest/oxlint/format proof recorded in PR body and land-ready comment

Fixes openclaw#80347.
Fixes openclaw#88357.
Fixes openclaw#45269.
Supersedes openclaw#74427, openclaw#74432, openclaw#79370, openclaw#79894, openclaw#80366, and openclaw#88359.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants