Skip to content

BYOK azure provider 404 error #2576

Closed as not planned
Closed as not planned

Description

@ilyakastsenevich

byok azure provider returns 404 error

Image Image

example of working curl:

curl --request POST \
  --url https://ai-proxy.lab.epam.com/openai/deployments/gpt-5.4-2026-03-05-reasoning/chat/completions \
  --header 'api-key: my-key' \
  --header 'content-type: application/json' \
  --data '{
  "temperature": 1,
  "messages": [
    {
      "role": "user",
      "content": "hi"
    }
  ]
}'
curl --request GET \
  --url https://ai-proxy.lab.epam.com/openai/deployments \
  --header 'api-key: my-key' \
  --header 'content-type: text/plain'
{
  "data": [
    {
      "id": "gpt-5.4-2026-03-05-reasoning",
      "model": "gpt-5.4-2026-03-05-reasoning",
      "display_name": "GPT-5.4",
      "display_version": "2026-03-05-reasoning",
    ...
   }
]
}

Logs:
2026-04-08T14:24:37.144Z [DEBUG] ExP request: GET https://telemetry.business.githubcopilot.com/telemetry?tas-endpoint=githubdevdiv
2026-04-08T14:24:37.145Z [DEBUG] ExP headers: {"User-Agent":"copilot-cli","X-ExP-SDK-Version":"1","X-VSCode-ExtensionName":"CopilotCLI","X-MSEdge-ClientId":"397379ce-a1ab-46fa-bdc6-4fd9a32d8c77","x-exp-parameters":"copilottrackingid=bf0978e5a9f1231bf3606a64368216cf,github_copilotcli_cliversion=1.0.21.9999,github_copilotcli_prerelease=0,github_copilotcli_audience=external,github_copilotcli_experimentationoptin=0,extensionname=CopilotCLI,github_copilotcli_firstlaunchat=1773187200,github_copilotcli_copilotplan=business"}
2026-04-08T14:24:37.147Z [DEBUG] OpenTelemetry not enabled (resolveOtelConfig returned null)
2026-04-08T14:24:37.155Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: copilot_user_info)
2026-04-08T14:24:37.156Z [WARNING] could not load remote agents, no GitHub remote found
2026-04-08T14:24:37.164Z [INFO] Workspace initialized: 520d0c77-c066-4d08-ace1-8b37b65635ac (checkpoints: 0)
2026-04-08T14:24:37.165Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: session_start)
2026-04-08T14:24:37.165Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: memory_usage)
2026-04-08T14:24:37.165Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: first_launch)
2026-04-08T14:24:37.165Z [INFO] Starting Copilot CLI: 1.0.21
2026-04-08T14:24:37.165Z [INFO] Node.js version: v24.11.1
2026-04-08T14:24:37.166Z [DEBUG] [remoteHosts] Starting remote host detection for cwd=/Users/Ilya_Kastsenevich/dev/projects/RulesEngine, featureFlagEnabled=false
2026-04-08T14:24:37.166Z [DEBUG] [remoteHosts] Feature flag ADO_DETECTION is disabled, skipping detection
2026-04-08T14:24:37.166Z [INFO] Registering foreground session: 520d0c77-c066-4d08-ace1-8b37b65635ac
2026-04-08T14:24:37.166Z [DEBUG] Broadcasting session lifecycle event: session.foreground for session 520d0c77-c066-4d08-ace1-8b37b65635ac
2026-04-08T14:24:37.374Z [DEBUG] queryTerminalColors: detected bg=#212733, fg=#e6e6e6
2026-04-08T14:24:37.421Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: cli_ready)
2026-04-08T14:24:37.423Z [INFO] Login status unknown
2026-04-08T14:24:37.431Z [INFO] Remote session access enabled
2026-04-08T14:24:37.431Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: model_resolution_info)
2026-04-08T14:24:37.433Z [DEBUG] Embedding retrieval skipped: DYNAMIC_INSTRUCTIONS_RETRIEVAL not enabled.
2026-04-08T14:24:37.434Z [DEBUG] str_replace_editor: default options: {
"truncateBasedOn": "tokenCount",
"truncateStyle": "middle"
}
2026-04-08T14:24:37.439Z [INFO] Welcome Ilya-Kastsenevich_epam!
2026-04-08T14:24:37.443Z [DEBUG] Embedding retrieval skipped: DYNAMIC_INSTRUCTIONS_RETRIEVAL not enabled.
2026-04-08T14:24:37.443Z [DEBUG] str_replace_editor: default options: {
"truncateBasedOn": "tokenCount",
"truncateStyle": "middle"
}
2026-04-08T14:24:37.461Z [DEBUG] SnapshotManager: Git repository detected at /Users/Ilya_Kastsenevich/dev/projects/RulesEngine
2026-04-08T14:24:37.463Z [INFO] Init suggestion check completed
2026-04-08T14:24:37.468Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: skills_loaded)
2026-04-08T14:24:37.520Z [INFO] Unregistering foreground session: 520d0c77-c066-4d08-ace1-8b37b65635ac
2026-04-08T14:24:37.520Z [DEBUG] Broadcasting session lifecycle event: session.background for session 520d0c77-c066-4d08-ace1-8b37b65635ac
2026-04-08T14:24:37.520Z [INFO] Registering foreground session: 520d0c77-c066-4d08-ace1-8b37b65635ac
2026-04-08T14:24:37.520Z [DEBUG] Broadcasting session lifecycle event: session.foreground for session 520d0c77-c066-4d08-ace1-8b37b65635ac
2026-04-08T14:24:37.525Z [DEBUG] LSP configs already initialized for /Users/Ilya_Kastsenevich/dev/projects/RulesEngine, skipping
2026-04-08T14:24:37.525Z [DEBUG] No LSP servers to warm up (no custom servers or detected project types)
2026-04-08T14:24:37.525Z [DEBUG] LSP configs already initialized for /Users/Ilya_Kastsenevich/dev/projects/RulesEngine, skipping
2026-04-08T14:24:37.530Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: mcp_policy_check)
2026-04-08T14:24:37.531Z [ERROR] Skipping disabled MCP server: chrome-devtools
2026-04-08T14:24:37.531Z [ERROR] Skipping disabled MCP server: uui
2026-04-08T14:24:37.531Z [ERROR] Skipping disabled MCP server: mcp-toolbox-for-databases
2026-04-08T14:24:37.531Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: mcp_allowlist_policy_check)
2026-04-08T14:24:37.531Z [DEBUG] GitHub MCP server is disabled, registering config for later use
2026-04-08T14:24:37.531Z [DEBUG] Scanning for IDE lock files in: /Users/Ilya_Kastsenevich/.copilot/ide
2026-04-08T14:24:37.535Z [DEBUG] Starting IDE lock file watcher for workspace: /Users/Ilya_Kastsenevich/dev/projects/RulesEngine
2026-04-08T14:24:37.535Z [DEBUG] Started watching for IDE lock files for workspace: /Users/Ilya_Kastsenevich/dev/projects/RulesEngine
2026-04-08T14:24:37.537Z [DEBUG] Embedding retrieval skipped: DYNAMIC_INSTRUCTIONS_RETRIEVAL not enabled.
2026-04-08T14:24:37.537Z [DEBUG] str_replace_editor: default options: {
"truncateBasedOn": "tokenCount",
"truncateStyle": "middle"
}
2026-04-08T14:24:37.538Z [DEBUG] LSP configs already initialized for /Users/Ilya_Kastsenevich/dev/projects/RulesEngine, skipping
2026-04-08T14:24:37.553Z [DEBUG] Found 1 IDE lock file(s)
2026-04-08T14:24:37.558Z [DEBUG] Valid IDE lock file: Visual Studio Code (PID 7179), workspaces: /Users/Ilya_Kastsenevich/dev/projects/isdp-self-service-ui
2026-04-08T14:24:37.558Z [DEBUG] Discovered 1 IDE workspace entries
2026-04-08T14:24:37.695Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: exp_context_fetch)
2026-04-08T14:24:37.807Z [INFO] No update needed, current version is 1.0.21, fetched latest release is v1.0.21
2026-04-08T14:24:39.562Z [DEBUG] Detected mentions:
2026-04-08T14:24:39.564Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: pending_messages_modified)
2026-04-08T14:24:39.566Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: pending_messages_modified)
2026-04-08T14:24:39.567Z [DEBUG] Embedding retrieval skipped: DYNAMIC_INSTRUCTIONS_RETRIEVAL not enabled.
2026-04-08T14:24:39.568Z [DEBUG] str_replace_editor: default options: {
"truncateBasedOn": "tokenCount",
"truncateStyle": "middle"
}
2026-04-08T14:24:39.568Z [INFO] Using custom provider: type=azure, baseUrl=https://ai-proxy.lab.epam.com, wireApi=completions
2026-04-08T14:24:39.568Z [INFO]
2026-04-08T14:24:39.568Z [DEBUG] Using model: gpt-5.4-2026-03-05-reasoning
2026-04-08T14:24:39.568Z [INFO] --- Start of group: configured settings: ---
2026-04-08T14:24:39.568Z [DEBUG] {
"version": "latest",
"service": {
"instance": {
"id": "2083544d-1840-463a-bfb7-18c9dbf7c450"
},
"agent": {
"model": "capi:gpt-5.4:defaultReasoningEffort=medium"
}
},
"blackbird": {
"mode": "initial-search"
},
"tools": {
"validation": {
"dependabotTimeout": 240
}
},
"problem": {
"statement": "hi"
},
"github": {
"repo": {
"commit": "copilot-sdk-commit",
"readWrite": false
}
},
"api": {
"copilot": {
"integrationId": "copilot-developer-cli"
},
"openai": {
"apiKey": "******",
"azure": {
"url": "https://ai-proxy.lab.epam.com"
}
}
},
"featureFlags": {
"CONTINUITY_REMOTE_CONTROL": false,
"FEATURE_FLAG_TEST": false,
"copilot-feature-agentic-memory": true,
"copilot-feature-agentic-memory-disabled": false,
"PERSISTED_PERMISSIONS": false,
"COPILOT_SWE_AGENT_BACKGROUND_AGENTS": true,
"COPILOT_SWE_AGENT_PARALLEL_TASK_EXECUTION": true,
"QUEUED_COMMANDS": false,
"DISABLE_WEB_TOOLS": false,
"CONTENT_EXCLUSION": false,
"SKILLS_INSTRUCTIONS": false,
"ADO_DETECTION": false,
"SESSION_CLEANUP": false,
"KEEP_ALIVE": false,
"TUIKIT_COMMAND": false,
"CHILD_CUSTOM_INSTRUCTIONS": false,
"SUBAGENT_COMPACTION": false,
"SESSION_STORE": false,
"CLOUD_SESSION_STORE": false,
"DIAGNOSE": false,
"COLLECT_DEBUG_LOGS": false,
"STATUS_LINE": false,
"WEBSOCKET_RESPONSES": false,
"DISABLE_REASONING_OUTPUT_GPT": false,
"SHOW_FILE": false,
"MCP_ALLOWLIST": false,
"ASK_USER_ELICITATION": false,
"MULTI_TURN_AGENTS": false,
"EXTENSIONS": false,
"REMOTE_SESSION_EXPORT": false,
"CONFIGURE_COPILOT_AGENT": false,
"TOOL_SEARCH": false,
"DYNAMIC_INSTRUCTIONS_RETRIEVAL": false,
"CODEX_FOR_SUBAGENTS": false,
"GPT_5_4_MINI_FOR_EXPLORE": false,
"OPUS_MEDIUM_EFFORT_DEFAULT": false,
"NEW_RENDERER": false,
"BACKGROUND_SESSIONS": false,
"SANDBOX": false,
"RUBBER_DUCK_AGENT": false,
"COMPUTER_USE": false
},
"clientName": "github/cli"
}
2026-04-08T14:24:39.568Z [INFO] --- End of group ---
2026-04-08T14:24:39.568Z [DEBUG] Using versionless Azure OpenAI v1 API at https://ai-proxy.lab.epam.com/openai/v1
2026-04-08T14:24:39.568Z [DEBUG] Using Azure OpenAI API Key
2026-04-08T14:24:39.569Z [DEBUG] Listed models:
2026-04-08T14:24:39.569Z [DEBUG] Got model info: {
"id": "gpt-5.4-2026-03-05-reasoning",
"name": "gpt-5.4-2026-03-05-reasoning",
"capabilities": {
"supports": {
"vision": false
},
"limits": {
"max_prompt_tokens": 128000,
"max_context_window_tokens": 200000,
"vision": {
"max_prompt_image_size": 3145728,
"max_prompt_images": 1,
"supported_media_types": [
"image/jpeg",
"image/png",
"image/webp"
]
}
}
}
}
2026-04-08T14:24:39.569Z [ERROR] Failed to load memories for prompt: Error: GitHub repository name is required
2026-04-08T14:24:39.590Z [DEBUG] LSP configs already initialized for /Users/Ilya_Kastsenevich/dev/projects/RulesEngine, skipping
2026-04-08T14:24:39.590Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: tools_available)
2026-04-08T14:24:39.593Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: term_info)
2026-04-08T14:24:39.593Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: user_message)
2026-04-08T14:24:39.594Z [INFO] --- Start of group: Completion request configuration: ---
2026-04-08T14:24:39.594Z [DEBUG] Client options:
2026-04-08T14:24:39.594Z [DEBUG] {
"model": "gpt-5.4-2026-03-05-reasoning",
"toolTokenBudgetProportion": 0.25,
"retryPolicy": {
"maxRetries": 5,
"errorCodesToRetry": [],
"rateLimitRetryPolicy": {
"defaultRetryAfterSeconds": 5,
"initialRetryBackoffExtraSeconds": 1,
"retryBackoffExtraGrowth": 2,
"maxRetryAfterSeconds": 180
}
},
"thinkingMode": true,
"requestHeaders": {},
"enableCacheControl": false,
"defaultReasoningEffort": "medium",
"responsesTextConfig": {
"verbosity": "low"
},
"maxOutputTokens": 128000
}
2026-04-08T14:24:39.594Z [DEBUG] Request options:
2026-04-08T14:24:39.594Z [DEBUG] {
"failIfInitialInputsTooLong": false,
"processors": {
"preRequest": [
"CompactionProcessor",
"BasicTruncator",
"ImmediatePromptProcessor",
"{"type":"PremiumRequestProcessor"}",
"SupportImageToolsVisionProcessor"
],
"preToolsExecution": [
"{"type":"PreToolUseHooksProcessor"}"
],
"postToolExecution": [
"SupportImageToolsVisionProcessor"
],
"onRequestError": [
"SupportImageToolsVisionProcessor",
"CompactionProcessor",
"BasicTruncator",
"StreamingErrorRetryProcessor"
],
"onStreamingChunk": [
"StreamingChunkDisplay",
"ReportIntentExtractor"
]
},
"abortSignal": {},
"stream": true,
"sessionFs": {
"sessionStatePath": "/Users/Ilya_Kastsenevich/.copilot/session-state/520d0c77-c066-4d08-ace1-8b37b65635ac",
"tmpdir": "/var/folders/_7/2g92d73s5nq3w50sng3_0frr0000gn/T",
"conventions": "posix"
}
}
2026-04-08T14:24:39.596Z [DEBUG] Final request options:
2026-04-08T14:24:39.596Z [DEBUG] {}
2026-04-08T14:24:39.596Z [INFO] --- End of group ---
2026-04-08T14:24:39.597Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: assistant_turn_start)
2026-04-08T14:24:39.803Z [INFO] CompactionProcessor: Utilization 10.4% (13321/128000 tokens) below threshold 80%
2026-04-08T14:24:39.819Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: session_usage_info)
2026-04-08T14:24:39.819Z [DEBUG] PremiumRequestProcessor: Setting X-Initiator to 'user'
2026-04-08T14:24:39.819Z [DEBUG] Model does not support vision, skipping image processing
2026-04-08T14:24:39.819Z [INFO] --- Start of group: Sending request to the AI model ---
2026-04-08T14:24:39.863Z [DEBUG] Flushed 3 events to session 520d0c77-c066-4d08-ace1-8b37b65635ac
2026-04-08T14:24:39.866Z [DEBUG] SnapshotManager: Capturing workspace state: 19 files (commit: 1193f568, branch: uat)
2026-04-08T14:24:39.883Z [DEBUG] SnapshotManager: Snapshot f2d61a89-cee2-4697-9186-d0177c02ab59 complete: 19 files
2026-04-08T14:24:40.509Z [ERROR] error (Request-ID null)
2026-04-08T14:24:40.517Z [ERROR] {
"status": 404,
"headers": {},
"requestID": null,
"request_id": null,
"ghRequestId": null,
"name": "CAPIError",
"message": "404 404 Route is not found",
"stack": "CAPIError: 404 404 Route is not found\n at t.fromAPIError (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2059:993)\n at x0e.getCompletionWithTools (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2059:11489)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async x0e.getCompletionWithTools (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2071:3370)\n at async t.runAgenticLoop (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2455:43529)\n at async t.processQueuedItems (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2455:7978)\n at async t.processQueue (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2455:2932)\n at async t.send (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2453:4033)\n at async file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:6532:1808"
}
2026-04-08T14:24:40.517Z [DEBUG] Failed to get response from the AI model: CAPIError: 404 404 Route is not found
2026-04-08T14:24:40.518Z [ERROR] Retry after is not set. Giving up.
2026-04-08T14:24:40.518Z [ERROR] error
2026-04-08T14:24:40.518Z [ERROR] {
"status": 404,
"headers": {},
"requestID": null,
"request_id": null,
"ghRequestId": null,
"name": "CAPIError",
"message": "404 404 Route is not found",
"stack": "CAPIError: 404 404 Route is not found\n at t.fromAPIError (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2059:993)\n at x0e.getCompletionWithTools (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2059:11489)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async x0e.getCompletionWithTools (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2071:3370)\n at async t.runAgenticLoop (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2455:43529)\n at async t.processQueuedItems (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2455:7978)\n at async t.processQueue (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2455:2932)\n at async t.send (file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:2453:4033)\n at async file:///Users/Ilya_Kastsenevich/.copilot/pkg/universal/1.0.21/app.js:6532:1808"
}
2026-04-08T14:24:40.518Z [INFO] --- End of group ---
2026-04-08T14:24:40.518Z [DEBUG] Ignoring event of kind: turn_failed
2026-04-08T14:24:40.518Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: assistant_turn_end)
2026-04-08T14:24:40.518Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: memory_usage)
2026-04-08T14:24:40.519Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: session_error)
2026-04-08T14:24:40.519Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: bash_shutdown)
2026-04-08T14:24:40.519Z [DEBUG] Sending telemetry event: copilot-cli/cli.telemetry (kind: bash_shutdown)
2026-04-08T14:24:40.626Z [DEBUG] Flushed 2 events to session 520d0c77-c066-4d08-ace1-8b37b65635ac

Affected version

1.0.21

Steps to reproduce the behavior

steps to reproduce

type in terminal

COPILOT_PROVIDER_TYPE=azure \
COPILOT_PROVIDER_BASE_URL=https://ai-proxy.lab.epam.com \
COPILOT_PROVIDER_API_KEY=my-key \
COPILOT_PROVIDER_MODEL_ID=gpt-5.4 \
COPILOT_PROVIDER_WIRE_MODEL=gpt-5.4-2026-03-05-reasoning \
copilot 

Expected behavior

custom azure provider works

Additional context

macos 26.4

Activity

  1. added
    area:modelsModel selection, availability, switching, rate limits, and model-specific behavior
    area:configurationConfig files, instruction files, settings, and environment variables
    and removed on Apr 16, 2026
  2. patniko commented on Oct 26, 2026

    @patniko
    Collaborator

    Thanks for the report, and sorry for the slow follow-up. We couldn't pin this down from the screenshots, but one likely cause is that since v1.0.20, Azure BYOK uses the GA versionless /openai/v1/ route when no API version is configured, so a proxy that only implements the classic /openai/deployments/<deployment>/chat/completions route will return 404. Setting COPILOT_PROVIDER_AZURE_API_VERSION switches to the versioned deployment route; also set COPILOT_PROVIDER_WIRE_MODEL to your deployment name and, if your proxy only supports Chat Completions, COPILOT_PROVIDER_WIRE_API=completions (see Adding LLM models to GitHub Copilot CLI). If it still fails on the latest version (v1.0.103), please open a new issue with your COPILOT_PROVIDER_* settings (with keys redacted), the CLI version, and debug logs from a failing run (--log-level all --log-dir <dir>).

    Triaged as part of a Copilot SDK backlog review, with help from GitHub Copilot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:configurationConfig files, instruction files, settings, and environment variablesarea:modelsModel selection, availability, switching, rate limits, and model-specific behavior

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions