openclaw - ✅(Solved) Fix [Bug]: tui/agent etc not working when azure openai endpoint is onboarded [4 pull requests, 2 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#48939Fetched 2026-04-08 00:50:46
View on GitHub
Comments
2
Participants
2
Timeline
10
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×4commented ×2labeled ×2closed ×1

When we onboard openclaw to our machine through the onboarding wizard, if we try to configure an azure openai endpoint through the custom providers option, the onboarding is successful but tui, agent, etc does not work, it fails with 404 resource not found error.

Root Cause: The issue happens because when an Azure OpenAI endpoint is onboarded through the custom provider option through the onboarding wizard, it is treated like a normal openai endpoint, specifically openai-completions. The issue here is that, pi-ai does not have any implementation for azure-openai-completions, it only has implementation for azure-openai-responses.

Suggested Fix A good fix here would be that during onboarding, the azure openai endpoint details be stored as azure-openai-responses type instead of openai-completions. I would be more than happy to contribute and fix this issue once and for all.

Error Message

When we onboard openclaw to our machine through the onboarding wizard, if we try to configure an azure openai endpoint through the custom providers option, the onboarding is successful but tui, agent, etc does not work, it fails with 404 resource not found error. 5. The onboarding is successful but if we "openclaw tui" or "openclaw agent...", it fails with 404 error "openclaw tui", "openclaw agent..." fails with 404 error

Root Cause

Root Cause: The issue happens because when an Azure OpenAI endpoint is onboarded through the custom provider option through the onboarding wizard, it is treated like a normal openai endpoint, specifically openai-completions. The issue here is that, pi-ai does not have any implementation for azure-openai-completions, it only has implementation for azure-openai-responses.

Fix Action

Fixed

PR fix notes

PR #49126: WORKING: All Microsoft Issues and PRs

Description (problem / solution / changelog)

Microsoft Ecosystem Issues & PRs Tracker

Purpose: Living checklist for maintainers to track all open Microsoft-related issues and PRs (Teams, Windows, WSL, Azure, M365/SharePoint).

How to use:

  • Mark items resolved by editing this PR body and changing [ ] to [x]
  • Claim items by adding your GitHub handle to the Assignee column
  • Priority guide: P0 = crash/blocker, P1 = significant bug/regression, P2 = minor bug/enhancement, P3 = nice-to-have/stale
  • Items marked (stale) have been flagged by the stale bot due to inactivity

Last updated: 2026-03-19


Summary

CategoryIssuesPRsTotal
MS Teams (channel plugin)2830+~58
Windows (platform)55+22+~77
WSL107~17
Azure (provider/infra)1411~25
Microsoft 365 / SharePoint303
Total (deduplicated)~90~55~145

1. MS Teams Channel Plugin — Issues

Bugs / Crashes

Resolved?Priority#TitleLabelsAssignee
[ ]P0#44857Broken bundled msteams extensionbug bug:crash
[ ]P0#43648MS Teams: inline pasted images fail to download (hostedContents contentBytes always null)bug bug:crash
[ ]P1#43323MS Teams pairing drops first DM before saving conversation reference, so --notify always failsbug bug:behavior
[ ]P1#47268[msteams] FileConsentCard not updated after user accepts — consent card remains frozen
[ ]P1#38629msteams implicit mention fails — replyToId unreliable, threadRootId not used as fallback
[ ]P1#35822MS Teams DM file attachments fail: Graph API chatId format mismatch and messageId encoding error
[ ]P1#29379MS Teams plugin drops all text blocks after the first in multi-block replies
[ ]P1#29847fix(msteams): FileConsent upload succeeds but FileInfoCard fails — TurnContext proxy revoked
[ ]P1#27885msteams provider exits immediately, causing infinite auto-restart loop
[x]P1#25790msteams plugin: duplicate provider start causes EADDRINUSE crash loop (bundled + standalone conflict)
[ ]P1#24148Cross-channel reply context leak — Teams DM overwrites session reply targetbug
[ ]P1#24088Plugin MSTeams en OpenClawbug
[ ]P1#23453MS Teams: Inline images (Ctrl+V) in DMs not downloaded — Graph fallback fails
[ ]P1#22169msteams provider starts twice on gateway boot, causing EADDRINUSE restart loopbug
[ ]P1#42099fix(plugins): false-positive duplicate plugin ID warning on gateway start (msteams)
[ ]P2#28014[msteams] Inline image downloads fail in 1:1 chats — bot adapter token instead of MSAL Graph token (stale)stale
[ ]P2#26599[MSTeams] Regular messages falsely detected as <media:document> (stale)stale
[ ]P2#24797MSTeams: Image attachments not downloaded in bot DM chats (3 bugs) (stale)stale
[ ]P2#17783Microsoft Teams channel setup fails on OpenClaw (Raspberry Pi) (stale)bug stale
[ ]P2#15622Teams extension deps wiped on every global npm update (stale)stale
[ ]P2#14436Gateway JWT middleware blocks Bot Framework webhooks in msteams plugin (stale)bug stale

Feature Requests

Resolved?Priority#TitleLabelsAssignee
[ ]P2#40865feat(msteams): Implement read and search message actions for Teams channel
[ ]P2#40855Support federated credentials / managed identity for MS Teams Bot Framework auth
[ ]P2#13243msteams support resumable Graph upload session for files >4MBenhancement
[ ]P2#11346feat(msteams): Add Graph API-based message history query (readMessages action)enhancement
[ ]P2#7031Simplify Teams integration for M365-only organizations (no Azure subscription)enhancement
[ ]P3#19908WhatsApp Channel Reliability Issues — Migration to Teams Graph (stale)stale

2. MS Teams Channel Plugin — PRs

Resolved?Priority#TitleSizeAssignee
[ ]P0#48659MSTeams: harden channel integration and readable focus labelsXL
[ ]P1#48014feat(msteams): add DefaultAzureCredential auth type for passwordless Teams authL
[ ]P1#47934fix(msteams): address review feedback on #40884 — schema, types, env validationM
[x]P1#47860fix(msteams): add fetch timeout to Microsoft Graph API callsXS
[ ]P1#47270fix(msteams): update FileConsentCard in-place after upload via updateActivityS
[ ]P1#44899fix: add missing @microsoft/agents-hosting dependency for msteams extensionS
[ ]P1#44739feat(msteams): extract structured quote/reply context from HTML attachmentsM
[ ]P1#43934fix(msteams): persist conversation reference during DM pairingS
[ ]P1#43761fix(msteams): add @microsoft/agents-hosting to root dependenciesXS
[ ]P1#43414fix(msteams): persist first-DM conversation reference in pairing pathS
[ ]P1#43326feat(msteams): fetch thread history via Graph API for channel repliesM
[ ]P1#43190MS Teams: add channel archive persistence and deleted-channel cleanupXL
[ ]P1#41565feat(cards): add shared adaptive card rendering for all channelsXL
[ ]P1#41108fix(msteams): detect implicit mentions in thread replies via conversation.idS
[ ]P1#40884feat(msteams): support federated credentials and certificate authS
[ ]P1#40463fix(msteams): fix image attachment download for channel and DM messagesM
[ ]P1#39352fix(msteams): pass teamId into inbound route resolutionS
[ ]P2#37853feat(msteams): add Teams reaction supportM
[ ]P2#34581fix(msteams): handle invalid JSON escape sequences in Bot Framework activitiesM
[ ]P2#34532docs: add Teams academic chat Canvas MVP host-side guideXS
[ ]P2#33343fix(msteams): sanitize error messages sent to users (CWE-209)XS
[ ]P2#32558MSTeams: add upload session fallback for large filesM
[ ]P2#32555fix(msteams): clear pending upload timeout on removalXS
[ ]P2#30142feat(adapters): add sendPayload to batch-b (includes MS Teams)L
[ ]P2#23596fix(msteams): add SSRF validation to file consent upload URLM
[ ]P2#22325fix(security): prevent memory exhaustion in inline image decodingS
[ ]P2#21739feat(msteams): support resumable upload sessions for files > 4MBS
[ ]P2#18716msteams: fix DM image delivery + user target routingS
[ ]P3#27765msteams: allow replyStyle config override for DMs (stale)XS
[ ]P3#26668MSTeams: add upload session fallback for large filesL
[ ]P3#26274msteams: fix image download auth, double-counting, and typing indicator (stale)M
[ ]P3#25511fix(msteams): suppress reasoning-only text in outbound rendering (stale)XS
[ ]P3#8964test(msteams): add comprehensive tests for graph-upload module (stale)

3. Windows Platform — Issues

Installation / Setup / Gateway

Resolved?Priority#TitleAssignee
[ ]P0#48832[Windows] Module initialization error: CHANNEL_IDS not iterable on startup
[ ]P0#48756Gateway restart/stop commands fail on Windows, causing connection loss
[ ]P0#48736CLI WebSocket handshake timeout on Windows (~80% failure rate)
[ ]P1#48780[Windows] exec() and read() commands corrupted with </arg_value>> suffix
[ ]P1#48461Intermittent browser command failures on Windows (gateway closed, handshake timeout)
[ ]P1#48079LINE plugin /line/webhook returns 404 on Windows
[ ]P1#48043Chrome User Profile Attach Broken on Windows
[ ]P1#47957CI check/startup-memory/windows-tests globally broken
[ ]P1#47748Windows: openclaw update fails with spawn EINVAL
[ ]P1#47643Persistent Telegram Channel Issues on Windows
[ ]P1#47484openclaw_supervisor.ps1: unquoted paths break on Windows usernames with spaces
[ ]P1#47445gateway restart command fails when executed via exec tool on Windows
[ ]P1#46378Installation config UI freezes on Windows
[ ]P1#45940False negative from openclaw gateway probe on Windows
[ ]P1#45275pnpm ui:build fails: can't find C:\Program on Windows
[ ]P1#44559Windows: Gateway disconnects when PowerShell window closes
[ ]P1#44199Windows: ENOENT mkdir error in Telegram handler
[ ]P1#43943[Windows] Gateway fails to start with Chinese username path
[ ]P1#43180No hooks found — Windows pnpm install
[ ]P1#42839Windows: openclaw agent --local returns 401 after clean reset
[ ]P1#42556Plugin install fails on Windows with spawn EINVAL
[ ]P1#41797install.ps1 forcefully exits PowerShell on systems without winget
[ ]P1#40684npm install fails on Windows: git permission denied for libsignal-node
[ ]P1#40613Windows 11 exec Chinese output becomes mojibake
[ ]P1#40551[Windows + pnpm] Gateway dashboard returns 404 after upgrading
[ ]P1#40540openclaw update fails with EBUSY error on Windows
[ ]P1#40340bug(acpx): Windows console windows flash on every ACP spawn
[ ]P1#40108Dashboard returns 404 on Windows with pnpm global install
[ ]P1#39758OpenClaw 2026.3.7 Windows Setup Failure
[ ]P1#39057openclaw node status reports "stopped" on German Windows
[ ]P1#38054Windows install fails and immediately closes Powershell
[ ]P1#37563openclaw plugins install fails on Windows when Node.js path contains spaces
[ ]P1#37036In Windows, opening dashboard shows "Not Found"
[ ]P1#35807Exec tool corrupts PowerShell pipeline variables on Windows
[ ]P1#35796Windows node onboarding: no --token flag, config overwritten on restart
[ ]P1#35297Control UI: Tools toggles don't persist / Save disabled on Windows
[ ]P1#34189Control UI / Dashboard returns "Not Found" on Windows
[ ]P1#34092Chat "copy button" not working on Windows
[ ]P1#33862Feishu groupPolicy allowlist not working on Windows
[ ]P1#33514bug(acpx): resolveWindowsSpawnProgramCandidate is not a function
[ ]P1#31175Windows Node: exec-approvals socket not created automatically
[ ]P1#30973MEDIA: token parser rejects Windows drive-letter paths
[ ]P1#30072Windows: CLI startup regression ~14s vs ~3s
[ ]P1#29949/restart command fails on Windows: missing schtasks support
[ ]P1#29305Windows: acpx plugin binary verification fails under Scheduled Task
[ ]P1#29134ACP runtime backend reports unavailable on Windows
[ ]P1#28625Gemini CLI detection fails on Windows (npm global path mismatch)
[ ]P1#28551Dashboard shows incorrect status on Windows: Version n/a, Health Offline
[ ]P1#28283Exec approval gating intermittent on Windows
[ ]P1#28270Fix version mismatch & zombie process on Windows
[ ]P2#48689google-vertex auth broken on Windows in 2026.3.13
[ ]P2#47053tts.test.ts mock missing — Windows CI fails
[ ]P2#45529Support stdin/file input for config set (PowerShell quote issues)
[ ]P2#44487exec host=node broken from Mac gateway after 2026.3.11
[ ]P2#44362fix(backup): .backupignore permission check false-positives on Windows
[ ]P2#44361fix(backup): archive integrity cross-check fails on Windows
[ ]P2#44293Make pnpm check:docs work in native PowerShell
[ ]P2#43931MEMORY.md injected twice on Windows NTFS (case-insensitive)
[ ]P2#41800Gemini CLI OAuth broken on Windows (nvm)
[ ]P2#38809[Windows] Image payload missing for google-generative-ai
[ ]P2#37426Reply media dedupe should normalize Windows local paths
[ ]P2#30878Flaky Windows CI test in path-safety
[ ]P2#30403google-gemini-cli-auth OAuth fails on Windows
[ ]P2#25399tools.exec.pathPrepend replaces PATH entirely on Windows
[ ]P2#25282install on windows
[ ]P2#22851Windows: exec tool creates visible console windows (conhost flash)
[ ]P2#22554Telegram voice not auto-transcribed on Windows
[ ]P2#19819SIGUSR1 restart crashes on Windows: EBADF bad file descriptor
[ ]P2#16821exec tool mangles PowerShell $ syntax on Windows
[ ]P2#5440Error when installing via CMD on Windows 11
[ ]P3#25856Windows: cmd.exe window flashes every ~30s from ARP scanning (stale)
[ ]P3#25376Exec allowlist returns 'unsupported platform' on Windows (stale)
[ ]P3#24441P0 Windows reliability: stale lock, cron EPERM, single-instance guard (stale)
[ ]P3#23612OpenClaw installation fails on Windows (stale)
[ ]P3#23509SIGUSR1 restart creates orphaned process as Scheduled Task (stale)
[ ]P3#23109Silent failure sending local media on Windows via Telegram (stale)
[ ]P3#21990Exec Tool on Windows does not capture stdout/stderr (stale)
[x]P3#21678Windows: missing windowsHide:true on child_process.spawn (stale)
[ ]P3#16323Security: Insecure Default Tool Policies + Windows Command Injection (stale)

Feature Requests

Resolved?Priority#TitleAssignee
[ ]P2#44038[Proposal] Windows Quick Installer GUI
[ ]P2#38799Windows automation skills — bridging the platform gap
[ ]P2#39821Add Ctrl+Enter (Windows) shortcut to send messages in Control UI
[ ]P2#18985Supports Windows 11 MSYS environment and Fishshell
[ ]P2#15027Conflicting installation guidance for Windows
[ ]P2#10070canvas:a2ui:bundle script not Windows compatible
[ ]P3#26160Windows support for obsidian skill (stale)
[ ]P3#26110macOS-in-Docker for full experience on Linux/Windows x86
[ ]P3#75Linux/Windows Clawdbot Apps

4. Windows Platform — PRs

Resolved?Priority#TitleAssignee
[ ]P1#48887Fix/docs format check windows clean
[ ]P1#48613Fix/compatible with native windows
[ ]P1#48557test: normalize Windows plugin path assertions
[ ]P1#48544fix(tests): stabilize Windows CI cases
[ ]P1#48320fix(windows): add windowsHide to all Windows spawn resolution paths
[ ]P1#48130fix: correct Windows Chrome executable path extraction regex
[ ]P1#47751fix: wrap bunx with cmd shim on Windows
[ ]P1#47734fix: handle Windows schtasks "Last Result" key variant
[ ]P1#46992Fix: Windows terminal encoding set to UTF-8
[ ]P1#45870fix: align windows path tests with runtime behavior
[ ]P1#45860fix(build): prefer usable POSIX shells for Windows bundling
[ ]P1#45380Make env-prefixed npm scripts work on Windows
[ ]P2#44234docs(windows): note Git Bash requirement for A2UI builds
[ ]P2#44228fix(reply): normalize Windows media paths for dedupe
[ ]P2#44215fix(path): add Windows PATH bootstrap dirs
[ ]P2#44211fix(build): use Git Bash wrapper for A2UI bundling on Windows
[ ]P2#43624fix(gateway): fall back to PowerShell when wmic unavailable on Windows
[ ]P2#43611decode Windows console output (GBK/CP936)
[ ]P2#42174fix: false error of Windows path when binding host path to sandbox
[ ]P2#39644fix(windows): PowerShell completion install and time-format detection
[ ]P2#38932docs(gateway): add Windows no-Docker hardening fallback guide
[ ]P2#38846security(windows): enhance command argument validation
[ ]P2#37592fix(windows): handle spaces in Node.js path for plugin install
[ ]P2#32602Tests: skip ios-team-id on Windows

5. WSL (Windows Subsystem for Linux) — Issues

Resolved?Priority#TitleLabelsAssignee
[ ]P0#47590Gateway binds on WSL2 but never responds to probe/health/TUI
[ ]P1#44180WSL2: os.networkInterfaces() can throw and crash gateway
[ ]P1#44051[skills] Skipping skill path error on WSL Environmentbug regression
[ ]P1#43891Build failure on Windows: canvas:a2ui:bundle triggers WSL instead of Git Bashbug bug:crash
[ ]P1#42557exec host=node: path validation breaks cross-platform (WSL->Windows)
[ ]P1#31980[WSL2 Mirrored Mode] Gateway fails to start — "another gateway instance" errorbug regression
[ ]P2#41553Surface diagnostics for Control UI auth in WSL2 + Windows setupsenhancement
[ ]P2#34239windows 11 wsl ubtuenhancement
[ ]P2#20386Node host approval socket not responding on Windows/WSL
[ ]P2#16649WSL2: Control Windows browsers (Edge, Chrome) from OpenClaw
[ ]P2#7122DX Improvements for Windows/WSL2 Onboardingenhancement
[ ]P2#7057Flaky tests on Windows/WSL: timeouts and ENOENTenhancement

WSL — PRs

Resolved?Priority#TitleAssignee
[ ]P1#46698fix(auth): fix GitHub device flow polling and add --wait flag for WSL
[ ]P1#44419fix(gateway): guard interface discovery failures on WSL
[ ]P1#44129fix(skills): exempt managed skills from path escaping checks on WSL
[ ]P1#44082fix: Skipping skill path error on WSL Environment
[ ]P2#42857Tests: clear inherited WSL env in wsl detection test
[ ]P2#33321fix(build): add WSL detection to bundle-a2ui.sh
[ ]P2#31840Build: harden A2UI bundle for Windows+WSL shell path

6. Azure (Provider / Infrastructure) — Issues

Resolved?Priority#TitleLabelsAssignee
[ ]P0#48939tui/agent not working when Azure OpenAI endpoint is onboardedbug
[ ]P1#48107OpenAI SDK baseUrl query params silently dropped, breaking Azure OpenAI Responses API
[ ]P1#46971Azure OpenAI missing api-version query parameter causes 404 errors
[ ]P1#46676Azure OpenAI: api-version sent as header instead of query param causing 404
[ ]P1#38784Azure OpenAI models report 0 context tokens
[ ]P1#37123Azure OpenAI provider not appearing during onboardingbug regression
[ ]P1#34241Intermittent no-tool execution after switching to azure-openai-responsesbug regression
[ ]P1#32179Azure Foundry Anthropic: SSE stream events concatenated without delimiter
[ ]P1#28641Custom provider not accepting Azure Cognitive Service URLbug
[x]P2#48116Phase 10: Fix dedicated ACA provisioning — env vars, retry logic
[x]P2#48899Fix dedicated ACA worker: missing SystemAssigned identity
[ ]P2#36824Azure integration during onboarding/setupenhancement
[ ]P2#7249Support Claude Models via Azure serviceenhancement
[ ]P3#25058azure-responses sends rs_* reference when supportsStore=false (stale)

Azure — PRs

Resolved?Priority#TitleAssignee
[ ]P1#48267Azure models support (rebased)
[x]P1#47898docs: add Azure VM deployment guide with ARM templates
[ ]P1#47285feat(memory-lancedb): native Azure OpenAI support
[ ]P1#47181feat: add Azure Claude (AI Foundry) onboarding path
[ ]P1#46760fix(azure): ensure api-version is sent as query param not header
[ ]P1#39540Add support for Azure models (GPT-5.4 and more)
[ ]P1#37717feat: add Azure api-version support for OpenAI-compatible chat
[ ]P2#25166Docs: add Azure OpenAI provider guide
[ ]P3#25758Feat/azure ai provider (stale)
[x]P3#17970Copilot/refactor serverless azure function (stale)
[ ]P3#12059feat(agents): Add Azure AI Foundry credential support (stale)

7. Microsoft 365 / SharePoint — Issues

Resolved?Priority#TitleLabelsAssignee
[ ]P2#30299Microsoft SharePoint and Openclawenhancement
[ ]P2#30023Native Microsoft 365 integration (like gog for Google Workspace)enhancement
[ ]P3#40439ClawHub skill review pending: sharepoint-by-altf1be

Appendix: P0 Blockers (Start Here)

Resolved?#Title
[ ]#44857Broken bundled msteams extension
[ ]#43648MS Teams inline images crash
[ ]#48659PR: MSTeams harden integration (XL)
[ ]#48832Windows CHANNEL_IDS not iterable
[ ]#48756Windows gateway restart/stop fail
[ ]#48736Windows WebSocket 80% failure
[ ]#47590WSL2 gateway unresponsive
[ ]#48939Azure OpenAI endpoint broken

Appendix: Stale Items (Consider Closing)

Resolved?#Title
[ ]#28014msteams inline image downloads (1:1 chats)
[ ]#26599msteams false media:document detection
[ ]#24797msteams image attachments (3 bugs)
[ ]#17783Teams setup on Raspberry Pi
[ ]#15622Teams deps wiped on npm update
[ ]#14436JWT blocks Bot Framework webhooks
[ ]#19908WhatsApp migration to Teams Graph
[ ]#25856Windows cmd.exe flash from ARP
[ ]#25376Exec allowlist unsupported platform
[ ]#24441Windows reliability: lock + cron + instance guard
[ ]#23612Windows installation failure
[ ]#23509SIGUSR1 orphaned process
[ ]#23109Silent media failure on Windows
[ ]#21990Exec no stdout/stderr on Windows
[x]#21678Missing windowsHide:true
[ ]#16323Windows command injection security
[ ]#26160Obsidian skill Windows support
[ ]#25058Azure rs_* reference leak
[ ]#27765PR: msteams replyStyle DM override
[ ]#26274PR: msteams image auth fix
[ ]#25511PR: msteams suppress reasoning text
[ ]#8964PR: msteams graph-upload tests
[ ]#25758PR: Azure AI provider
[x]#17970PR: Azure function refactor
[ ]#12059PR: Azure AI Foundry credentials

Changed files


PR #49147: fix(onboard): keep Azure custom providers on Azure Responses API

Description (problem / solution / changelog)

Summary

  • store Azure OpenAI compatible custom providers as azure-openai-responses instead of openai-completions
  • preserve the existing Azure URL transformation while selecting the provider API from the original endpoint host
  • add a regression assertion covering Azure custom provider onboarding output

Testing

  • pnpm -C "/root/pr/openclaw" exec vitest run "src/commands/onboard-custom.test.ts"

Closes #48939

Changed files

  • src/commands/onboard-custom.test.ts (modified, +5/-1)
  • src/commands/onboard-custom.ts (modified, +7/-3)
  • src/config/types.models.ts (modified, +1/-0)

PR #49543: fix(provider): tui/agent etc not working when azure openai endpoint is onboarded through custom provider

Description (problem / solution / changelog)

Summary

Describe the problem and fix in 2–5 bullets:

  1. Onboard an Azure OpenAI endpoint through the custom provider with the correct details
  2. Use tui or agent, it fails

When Azure OpenAI endpoint is configured using the custom provider option, it is updated in the config with api "openai-completions". This refers to the "openai-completions" of pi-ai and when LLM calls are made to the endpoint, it fails with 404 response. My changes are going to update the onboarding code such that it instead uses the "openai-responses" api which works with azure openai endpoints. We could have also used the "azure-openai-responses" option of pi-ai but that asks for more changes so going for "openai-responses"

  • Problem:
  • Why it matters: Azure subscribers with Azure OpenAI endpoints are unable to use openclaw and they dont understand what is the issue after successfully onboarding the endpoint through the onboarding using custom provider option.
  • What changed: Only the config generated by the custom provider onboarding wizard changed, it now generates openai-responses based config for azure openai endpoints rather than openai-completions.
  • What did NOT change (scope boundary): Only the config update logic changed for azure openai endpoints, not openai endpoints/

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

User-visible / Behavior Changes

List user-visible changes (including defaults/config).
None

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No
  • Data access scope changed? No
  • If any Yes, explain risk + mitigation:

Repro + Verification

It was reproed in my ubuntu machine/container, it was not working before the fix <img width="991" height="691" alt="image" src="https://github.com/user-attachments/assets/d3d1b0ad-6698-4efc-8f7e-6a191fa5e013" />

Environment

  • OS: Ubuntu 24.04
  • Runtime/container: Azure VM/container both
  • Model/provider: Azure OpenAI gpt-5.2-chat
  • Integration/channel (if any):
  • Relevant config (redacted): Old config generated
{
  "wizard": {
    "lastRunAt": "2026-03-15T06:13:42.390Z",
    "lastRunVersion": "2026.3.14",
    "lastRunCommand": "onboard",
    "lastRunMode": "local"
  },
  "models": {
    "mode": "merge",
    "providers": {
      "custom-someresourcexyz-openai-azure-com": {
        "baseUrl": "https://someresourcexyz.openai.azure.com/openai/deployments/gpt-5.2-chat",
        "apiKey": "someapikey",
        "api": "openai-completions",
        "models": [
          {
            "id": "gpt-5.2-chat",
            "name": "gpt-5.2-chat (Custom Provider)",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 16000,
            "maxTokens": 4096
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "custom-someresourcexyz-openai-azure-com/gpt-5.2-chat"
      },
      "models": {
        "custom-someresourcexyz-openai-azure-com/gpt-5.2-chat": {}
      },
      "workspace": "/root/.openclaw/workspace"
    }
  },
  "tools": {
    "profile": "coding"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true,
    "ownerDisplay": "raw"
  },
  "session": {
    "dmScope": "per-channel-peer"
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": "sometoken"
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    },
    "nodes": {
      "denyCommands": [
        "camera.snap",
        "camera.clip",
        "screen.record",
        "contacts.add",
        "calendar.add",
        "reminders.add",
        "sms.send"
      ]
    }
  },
  "meta": {
    "lastTouchedVersion": "2026.3.14",
    "lastTouchedAt": "2026-03-15T06:13:42.400Z"
  }
}

Steps

  1. Onboard openclaw with azure openai endpoint
  2. Try out tui or agent

Expected

  • Tui or agent invocation would work

Actual

  • Tui and agent invocation fails before the fix <img width="991" height="691" alt="image" src="https://github.com/user-attachments/assets/d3d1b0ad-6698-4efc-8f7e-6a191fa5e013" />

Evidence

Attach at least one:

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

Verified the onboarding then testes tui, agent commands execution Custom provider onboarded: <img width="1169" height="708" alt="image" src="https://github.com/user-attachments/assets/a79a648e-e126-4939-8019-505b0412d3eb" />

TUI/Agent both works now after the fix: <img width="1227" height="993" alt="image" src="https://github.com/user-attachments/assets/b3001d64-cd59-4227-a7e7-0e9c14586d57" />

Config generated by the onboarding wizard:

{
  "meta": {
    "lastTouchedVersion": "2026.3.13",
    "lastTouchedAt": "2026-03-18T06:22:20.794Z"
  },
  "wizard": {
    "lastRunAt": "2026-03-18T06:22:20.786Z",
    "lastRunVersion": "2026.3.13",
    "lastRunCommand": "onboard",
    "lastRunMode": "local"
  },
  "models": {
    "mode": "merge",
    "providers": {
      "custom-myresource-openai-azure-com": {
        "baseUrl": "https://myresource.openai.azure.com/openai/v1",
        "apiKey": "hidden-api-key",
        "api": "openai-responses",
        "headers": {
          "api-key": "hidden-api-key"
        },
        "authHeader": false,
        "models": [
          {
            "id": "gpt-5.2-chat",
            "name": "gpt-5.2-chat (Custom Provider)",
            "reasoning": true,
            "input": [
              "text",
              "image"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 400000,
            "maxTokens": 16384,
            "compat": {
              "supportsStore": false
            }
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "custom-myresource-openai-azure-com/gpt-5.2-chat"
      },
      "models": {
        "custom-myresource-openai-azure-com/gpt-5.2-chat": {
          "params": {
            "thinking": "medium"
          }
        }
      },
      "workspace": "/root/.openclaw/workspace"
    }
  },
  "tools": {
    "profile": "coding"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true,
    "ownerDisplay": "raw"
  },
  "session": {
    "dmScope": "per-channel-peer"
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": "7c4feae22c3dcf0a629c9f3c29aa683a5f086739111f74cf"
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    },
    "nodes": {
      "denyCommands": [
        "camera.snap",
        "camera.clip",
        "screen.record",
        "contacts.add",
        "calendar.add",
        "reminders.add",
        "sms.send"
      ]
    }
  }
}

What you personally verified (not just CI), and how:

  • Verified scenarios: Manually onboarded, checked the config, tui chat execution, agent execution
  • Edge cases checked:
  • What you did not verify:

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

If a bot review conversation is addressed by this PR, resolve that conversation yourself. Do not leave bot review conversation cleanup for maintainers.

Compatibility / Migration

  • Backward compatible? Not applicable
  • Config/env changes? Not applicable
  • Migration needed? Not applicable
  • If yes, exact upgrade steps:

Failure Recovery (if this breaks)

  • How to disable/revert this change quickly: Revert the PR, use non-azure openai endpoint through custom provider, this flow never worked before so it will not be an issue
  • Files/config to restore:
  • Known bad symptoms reviewers should watch for:

Risks and Mitigations

List only real risks for this PR. Add/remove entries as needed. If none, write None. None

  • Risk:
    • Mitigation:

Changed files

  • CHANGELOG.md (modified, +1/-1)
  • src/commands/onboard-custom.test.ts (modified, +192/-8)
  • src/commands/onboard-custom.ts (modified, +107/-19)

PR #50851: chore(provider): use pi-ai's azure-openai-responses for azure openai endpoints

Description (problem / solution / changelog)

Summary

Describe the problem and fix in 2–5 bullets: This is just a small extension to this PR: https://github.com/openclaw/openclaw/pull/49543 We now use the "azure-openai-responses" implementation for azure openai custom provider endpoint. A manually configured azure openai endpoint with api "azure-openai-responses" fails as the enum MODEL_APIS in types.models.ts does not have an entry for "azure-openai-responses"

Response sanitization, etc not needed for azure-openai-responses as we have done for openai-responses, verified it manually

  • Problem:
  • Why it matters: pi-ai has a dedicated handler for azure-openai endpoints named "azure-openai-responses" to take care of azure-openai responses API calls, we might as well use it over "openai-responses" for azure openai endpoints as it has some specific handling over "openai-responses" which users might hit for some edge cases.
  • What changed: For custom azure openai endpoints, we were earlier using "openai-responses" we now use "azure-openai-responses"
  • What did NOT change (scope boundary): Scope is only the config generated for azure openai endpoints through custom provider onboarding.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

User-visible / Behavior Changes

List user-visible changes (including defaults/config).
The generated config now has api "azure-openai-responses" rather than "openai-responses" for custom provider azure openai endpoints.

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No
  • Data access scope changed? No
  • If any Yes, explain risk + mitigation:

Repro + Verification

Manually verified that after the change, tui and agent with tool calls work with a configured azure openai endpoint <img width="1512" height="948" alt="image" src="https://github.com/user-attachments/assets/f1c8eb42-38b1-4702-a630-1245be10bad0" />

Manually verified that after the change, the api field in focus generates "azure-openai-responses" <img width="1342" height="893" alt="image" src="https://github.com/user-attachments/assets/9356a268-c115-4c85-b4a4-dc18b3aaf266" />

Environment

  • OS: Ubuntu 25.10/Ubuntu 24.04
  • Runtime/container: Tested in both Azure VM & Docker container
  • Model/provider: Azure OpenAI gpt-5.2-chat & gpt-5.3-chat
  • Integration/channel (if any):
  • Relevant config (redacted):
{
  "wizard": {
    "lastRunAt": "2026-03-20T04:33:02.576Z",
    "lastRunVersion": "2026.3.14",
    "lastRunCommand": "onboard",
    "lastRunMode": "local"
  },
  "models": {
    "mode": "merge",
    "providers": {
      "custom-kkarmakar-ai-eus2-openai-azure-com": {
        "baseUrl": "https://resource.openai.azure.com/openai/v1",
        "apiKey": "key1234",
        "api": "azure-openai-responses",
        "headers": {
          "api-key": "key1234"
        },
        "authHeader": false,
        "models": [
          {
            "id": "gpt-5.3-chat",
            "name": "gpt-5.3-chat (Custom Provider)",
            "reasoning": true,
            "input": [
              "text",
              "image"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 400000,
            "maxTokens": 16384,
            "compat": {
              "supportsStore": false
            }
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "custom-resource-openai-azure-com/gpt-5.3-chat"
      },
      "models": {
        "custom-resource-openai-azure-com/gpt-5.3-chat": {
          "params": {
            "thinking": "medium"
          }
        }
      },
      "workspace": "/root/.openclaw/workspace"
    }
  },
  "tools": {
    "profile": "coding"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true,
    "ownerDisplay": "raw"
  },
  "session": {
    "dmScope": "per-channel-peer"
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": "0e8dbc50a15d49e09a70c4594b0f1a0abcbce8f6e1ebc51d"
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    },
    "nodes": {
      "denyCommands": [
        "camera.snap",
        "camera.clip",
        "screen.record",
        "contacts.add",
        "calendar.add",
        "reminders.add",
        "sms.send"
      ]
    }
  },
  "meta": {
    "lastTouchedVersion": "2026.3.14",
    "lastTouchedAt": "2026-03-20T04:33:02.586Z"
  }
}

Steps

  1. Install openclaw
  2. Onboard an azure openai endpoint using custom provider option or onboard an azure openai endpoint with api "azure-openai-responses" manually

Expected

TUI/Agent should work

Actual

Currently, without the change, onboarding wizard generates a config with "openai-responses" api fo azure openai responses which works but we dont know if any use case will break as pi-ai has a dedicated "azure-openai-responses" specifically for azure openai endpoints. A manually configured azure openai endpoint with api "azure-openai-responses" fails as the enum MODEL_APIS in types.models.ts does not have an entry for "azure-openai-responses"

Evidence

Attach at least one:

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

What you personally verified (not just CI), and how:

  • Verified scenarios: Manually installed openclaw, did the onboarding with custom provider interactive onboarding, verified tui & agent tool calls, verified the config file generated Response sanitization, etc not needed for azure-openai-responses as we have done for openai-responses, verified it manually, if we add the sanitization, we get 400 errors for azure-openai-responses
  • Edge cases checked:
  • What you did not verify:

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

If a bot review conversation is addressed by this PR, resolve that conversation yourself. Do not leave bot review conversation cleanup for maintainers.

Compatibility / Migration

  • Backward compatible? Not applicable
  • Config/env changes? Not applicable
  • Migration needed? Not applicable
  • If yes, exact upgrade steps:

Failure Recovery (if this breaks)

  • How to disable/revert this change quickly: Revert the PR
  • Files/config to restore:
  • Known bad symptoms reviewers should watch for:

Risks and Mitigations

None

List only real risks for this PR. Add/remove entries as needed. If none, write None.

  • Risk:
    • Mitigation:

Changed files

  • CHANGELOG.md (modified, +1/-0)
  • src/commands/onboard-custom.test.ts (modified, +2/-2)
  • src/commands/onboard-custom.ts (modified, +1/-1)
  • src/config/types.models.ts (modified, +1/-0)

Code Example

{
  "wizard": {
    "lastRunAt": "2026-03-15T06:13:42.390Z",
    "lastRunVersion": "2026.3.14",
    "lastRunCommand": "onboard",
    "lastRunMode": "local"
  },
  "models": {
    "mode": "merge",
    "providers": {
      "custom-someresourcexyz-openai-azure-com": {
        "baseUrl": "https://someresourcexyz.openai.azure.com/openai/deployments/gpt-5.2-chat",
        "apiKey": "someapikey",
        "api": "openai-completions",
        "models": [
          {
            "id": "gpt-5.2-chat",
            "name": "gpt-5.2-chat (Custom Provider)",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 16000,
            "maxTokens": 4096
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "custom-someresourcexyz-openai-azure-com/gpt-5.2-chat"
      },
      "models": {
        "custom-someresourcexyz-openai-azure-com/gpt-5.2-chat": {}
      },
      "workspace": "/root/.openclaw/workspace"
    }
  },
  "tools": {
    "profile": "coding"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true,
    "ownerDisplay": "raw"
  },
  "session": {
    "dmScope": "per-channel-peer"
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": "sometoken"
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    },
    "nodes": {
      "denyCommands": [
        "camera.snap",
        "camera.clip",
        "screen.record",
        "contacts.add",
        "calendar.add",
        "reminders.add",
        "sms.send"
      ]
    }
  },
  "meta": {
    "lastTouchedVersion": "2026.3.14",
    "lastTouchedAt": "2026-03-15T06:13:42.400Z"
  }
}
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Summary

When we onboard openclaw to our machine through the onboarding wizard, if we try to configure an azure openai endpoint through the custom providers option, the onboarding is successful but tui, agent, etc does not work, it fails with 404 resource not found error.

Root Cause: The issue happens because when an Azure OpenAI endpoint is onboarded through the custom provider option through the onboarding wizard, it is treated like a normal openai endpoint, specifically openai-completions. The issue here is that, pi-ai does not have any implementation for azure-openai-completions, it only has implementation for azure-openai-responses.

Suggested Fix A good fix here would be that during onboarding, the azure openai endpoint details be stored as azure-openai-responses type instead of openai-completions. I would be more than happy to contribute and fix this issue once and for all.

Steps to reproduce

  1. Install openclaw
  2. Onboard using openclaw onboard
  3. Select custom providers when it asks for provider details
  4. Enter valid azure openai endpoint details
  5. The onboarding is successful but if we "openclaw tui" or "openclaw agent...", it fails with 404 error

Expected behavior

openclaw tui and openclaw agent should work as expected

Actual behavior

"openclaw tui", "openclaw agent..." fails with 404 error <img width="1458" height="701" alt="Image" src="https://github.com/user-attachments/assets/7a716b7f-f730-491c-a549-442aeb82052e" />

OpenClaw version

2026.3.13

Operating system

Ubuntu 24.04

Install method

pnpm dev

Model

gpt-5.2-chat

Provider / routing chain

openclaw -> azure openai -> gpt-5.2-chat

Config file / key location

No response

Additional provider/model setup details

Config example:

{
  "wizard": {
    "lastRunAt": "2026-03-15T06:13:42.390Z",
    "lastRunVersion": "2026.3.14",
    "lastRunCommand": "onboard",
    "lastRunMode": "local"
  },
  "models": {
    "mode": "merge",
    "providers": {
      "custom-someresourcexyz-openai-azure-com": {
        "baseUrl": "https://someresourcexyz.openai.azure.com/openai/deployments/gpt-5.2-chat",
        "apiKey": "someapikey",
        "api": "openai-completions",
        "models": [
          {
            "id": "gpt-5.2-chat",
            "name": "gpt-5.2-chat (Custom Provider)",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 16000,
            "maxTokens": 4096
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "custom-someresourcexyz-openai-azure-com/gpt-5.2-chat"
      },
      "models": {
        "custom-someresourcexyz-openai-azure-com/gpt-5.2-chat": {}
      },
      "workspace": "/root/.openclaw/workspace"
    }
  },
  "tools": {
    "profile": "coding"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true,
    "ownerDisplay": "raw"
  },
  "session": {
    "dmScope": "per-channel-peer"
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "auth": {
      "mode": "token",
      "token": "sometoken"
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    },
    "nodes": {
      "denyCommands": [
        "camera.snap",
        "camera.clip",
        "screen.record",
        "contacts.add",
        "calendar.add",
        "reminders.add",
        "sms.send"
      ]
    }
  },
  "meta": {
    "lastTouchedVersion": "2026.3.14",
    "lastTouchedAt": "2026-03-15T06:13:42.400Z"
  }
}
<img width="1458" height="701" alt="Image" src="https://github.com/user-attachments/assets/7a716b7f-f730-491c-a549-442aeb82052e" />

Logs, screenshots, and evidence

<img width="1458" height="701" alt="Image" src="https://github.com/user-attachments/assets/7a716b7f-f730-491c-a549-442aeb82052e" />

Impact and severity

  • Impacts azure subscription customers using azure openai
  • Blocks workflow
  • Frequency always
  • Consequence is failed onboarding

Additional information

The issue happens because when an Azure OpenAI endpoint is onboarded as a custom provider through the onboarding wizard, it is treated like a normal openai endpoint, specifically openai-completions. The issue here is that, pi-ai does not have any implementation for azure-openai-completions, it only has implementation for azure-openai-responses, hence, a good fix here would be that during onboarding, the azure openai ednpoint details be stored as azure-openai-responses type instead of openai-completions.

I would be more than happy to contribute and fix this issue once and for all.

extent analysis

Fix Plan

To resolve the issue, we need to update the configuration to store Azure OpenAI endpoint details as azure-openai-responses type instead of openai-completions. Here are the steps:

  • Update the config.json file to reflect the correct API type for Azure OpenAI endpoints:
{
  "models": {
    "mode": "merge",
    "providers": {
      "custom-someresourcexyz-openai-azure-com": {
        "baseUrl": "https://someresourcexyz.openai.azure.com/openai/deployments/gpt-5.2-chat",
        "apiKey": "someapikey",
        "api": "azure-openai-responses", // Update this line
        "models": [
          {
            "id": "gpt-5.2-chat",
            "name": "gpt-5.2-chat (Custom Provider)",
            "reasoning": false,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 16000,
            "maxTokens": 4096
          }
        ]
      }
    }
  }
}
  • Alternatively, you can also update the onboarding wizard to automatically detect Azure OpenAI endpoints and store them as azure-openai-responses type.

Verification

To verify that the fix worked, try running openclaw tui or openclaw agent again after updating the configuration. If the issue is resolved, you should no longer see the 404 error.

Extra Tips

  • Make sure to update the configuration file correctly, as incorrect updates can lead to further issues.
  • If you are using a custom onboarding script, ensure that it is updated to handle Azure OpenAI endpoints correctly.
  • Consider adding additional logging or error handling to help diagnose similar issues in the future.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

openclaw tui and openclaw agent should work as expected

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING