# Connecting local AI server to Cursor does not work

**URL:** <https://forum.cursor.com/t/connecting-local-ai-server-to-cursor-does-not-work/152940>\
**Category:** Bug Reports\
**Tags:** byok, chat\
**Created:** [February 25, 2026, 4:27pm UTC](https://forum.cursor.com/t/connecting-local-ai-server-to-cursor-does-not-work/152940 "2026-02-25T16:27:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![bonf](https://avatars.discourse-cdn.com/v4/letter/b/258eb7/32.png) [@bonf](https://forum.cursor.com/u/bonf)\
**Post date:** [February 25, 2026, 4:27pm UTC](https://forum.cursor.com/t/connecting-local-ai-server-to-cursor-does-not-work/152940/1 "2026-02-25T16:27:58Z")

</div>

### Where does the bug appear (feature/product)?

Cursor IDE

### Describe the Bug

I have a local AI server running ollama and responding correctly on the standard port. But Cursor refuses to connect to the server using the “Override OpenAI Base URL” option and adding one of the models supplied by the ollama server. I can check the connections made to the server, but cursor does not initiate any connection, does not check the available models etc. I have tried this using HTTP and HTTPS connections. I have tried all models available on the server, but always get a “AI Model Not Found” in the chat window.

### Steps to Reproduce

Setup local ollama server  
Try to connect to server using “Override OpenAI Base URL”

### Expected Behavior

Cursor is expected to connect ot the Ollama server (and communicate correctly, but initial connection fails already)

### Operating System

Windows 10/11

### Version Information

Version: 2.5.25 (user setup)  
VSCode Version: 1.105.1  
Commit: 7150844152b426ed50d2b68dd6b33b5c5beb73c0  
Date: 2026-02-24T07:17:49.417Z  
Build Type: Stable  
Release Track: Default  
Electron: 39.4.0  
Chromium: 142.0.7444.265  
Node.js: 22.22.0  
V8: 14.2.231.22-electron.0  
OS: Windows\_NT x64 10.0.19045

### For AI issues: which model did you use?

gpt-oss:20b etc.

### Additional Information

workbench.desktop.main.js:44241 [transport] [AGENT\_ERROR\_DIAGNOSTICS] requestId=96956425-9192-494c-9c8b-02f4e6d0caf4 decision=THROW aXt {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, decision: ‘THROW aXt’, …}  
\_log @ workbench.desktop.main.js:44241  
warn @ workbench.desktop.main.js:44241  
log @ workbench.desktop.main.js:32116  
e @ workbench.desktop.main.js:464  
warn @ workbench.desktop.main.js:464  
run @ workbench.desktop.main.js:32116  
await in run  
run @ workbench.desktop.main.js:44360  
runAgentLoop @ workbench.desktop.main.js:44360  
streamFromAgentBackend @ workbench.desktop.main.js:44408  
await in streamFromAgentBackend  
getAgentStreamResponse @ workbench.desktop.main.js:44408  
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:32182  
await in submitChatMaybeAbortCurrent  
Gs @ workbench.desktop.main.js:43415  
await in Gs  
onSubmit @ workbench.desktop.main.js:43415  
T @ workbench.desktop.main.js:43387  
onSubmit @ workbench.desktop.main.js:43387  
handleSubmit @ workbench.desktop.main.js:43290  
(anonymous) @ workbench.desktop.main.js:43292  
C$d @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
k$d @ workbench.desktop.main.js:453  
Zue @ workbench.desktop.main.js:453  
update @ workbench.desktop.main.js:455  
C$d @ workbench.desktop.main.js:453  
Td @ workbench.desktop.main.js:453  
$7b @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
workbench.desktop.main.js:44241 [transport] [nal\_agent\_retries] Error not retryable {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, attempt: 0, …}  
\_log @ workbench.desktop.main.js:44241  
warn @ workbench.desktop.main.js:44241  
log @ workbench.desktop.main.js:32116  
e @ workbench.desktop.main.js:464  
warn @ workbench.desktop.main.js:464  
run @ workbench.desktop.main.js:32116  
await in run  
run @ workbench.desktop.main.js:44360  
runAgentLoop @ workbench.desktop.main.js:44360  
streamFromAgentBackend @ workbench.desktop.main.js:44408  
await in streamFromAgentBackend  
getAgentStreamResponse @ workbench.desktop.main.js:44408  
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:32182  
await in submitChatMaybeAbortCurrent  
Gs @ workbench.desktop.main.js:43415  
await in Gs  
onSubmit @ workbench.desktop.main.js:43415  
T @ workbench.desktop.main.js:43387  
onSubmit @ workbench.desktop.main.js:43387  
handleSubmit @ workbench.desktop.main.js:43290  
(anonymous) @ workbench.desktop.main.js:43292  
C$d @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
k$d @ workbench.desktop.main.js:453  
Zue @ workbench.desktop.main.js:453  
update @ workbench.desktop.main.js:455  
C$d @ workbench.desktop.main.js:453  
Td @ workbench.desktop.main.js:453  
$7b @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
workbench.desktop.main.js:32182 [composer] Error in AI response: undefined aXt: AI Model Not Found Model name is not valid: “gptoss20bplain”  
at jpA (workbench.desktop.main.js:32115:44798)  
at WpA (workbench.desktop.main.js:32115:43786)  
at ZpA (workbench.desktop.main.js:32116:5088)  
at Ool.run (workbench.desktop.main.js:32116:9098)  
at async s$o.runAgentLoop (workbench.desktop.main.js:44360:8423)  
at async zOl.streamFromAgentBackend (workbench.desktop.main.js:44408:8884)  
at async zOl.getAgentStreamResponse (workbench.desktop.main.js:44408:9837)  
at async yLe.submitChatMaybeAbortCurrent (workbench.desktop.main.js:32182:15752)  
at async Gs (workbench.desktop.main.js:43415:4781)Caused by: ConnectError: [not\_found] Error  
at o6g.$endAiConnectTransportReportError (workbench.desktop.main.js:43352:34726)  
at Nxt.\_doInvokeHandler (workbench.desktop.main.js:44181:23171)  
at Nxt.\_invokeHandler (workbench.desktop.main.js:44181:22913)  
at Nxt.\_receiveRequest (workbench.desktop.main.js:44181:21545)  
at Nxt.\_receiveOneMessage (workbench.desktop.main.js:44181:20362)  
at UCn.value (workbench.desktop.main.js:44181:18389)  
at He.\_deliver (workbench.desktop.main.js:55:2962)  
at He.fire (workbench.desktop.main.js:55:3283)  
at osn.fire (workbench.desktop.main.js:43336:12156)  
at MessagePort. (workbench.desktop.main.js:47217:18406)  
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:32182  
await in submitChatMaybeAbortCurrent  
Gs @ workbench.desktop.main.js:43415  
await in Gs  
onSubmit @ workbench.desktop.main.js:43415  
T @ workbench.desktop.main.js:43387  
onSubmit @ workbench.desktop.main.js:43387  
handleSubmit @ workbench.desktop.main.js:43290  
(anonymous) @ workbench.desktop.main.js:43292  
C$d @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
k$d @ workbench.desktop.main.js:453  
Zue @ workbench.desktop.main.js:453  
update @ workbench.desktop.main.js:455  
C$d @ workbench.desktop.main.js:453  
Td @ workbench.desktop.main.js:453  
$7b @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
workbench.desktop.main.js:44241 [composer] Error in AI response aXt: AI Model Not Found Model name is not valid: “gptoss20bplain”  
at jpA (workbench.desktop.main.js:32115:44798)  
at WpA (workbench.desktop.main.js:32115:43786)  
at ZpA (workbench.desktop.main.js:32116:5088)  
at Ool.run (workbench.desktop.main.js:32116:9098)  
at async s$o.runAgentLoop (workbench.desktop.main.js:44360:8423)  
at async zOl.streamFromAgentBackend (workbench.desktop.main.js:44408:8884)  
at async zOl.getAgentStreamResponse (workbench.desktop.main.js:44408:9837)  
at async yLe.submitChatMaybeAbortCurrent (workbench.desktop.main.js:32182:15752)  
at async Gs (workbench.desktop.main.js:43415:4781)Caused by: ConnectError: [not\_found] Error  
at o6g.$endAiConnectTransportReportError (workbench.desktop.main.js:43352:34726)  
at Nxt.\_doInvokeHandler (workbench.desktop.main.js:44181:23171)  
at Nxt.\_invokeHandler (workbench.desktop.main.js:44181:22913)  
at Nxt.\_receiveRequest (workbench.desktop.main.js:44181:21545)  
at Nxt.\_receiveOneMessage (workbench.desktop.main.js:44181:20362)  
at UCn.value (workbench.desktop.main.js:44181:18389)  
at He.\_deliver (workbench.desktop.main.js:55:2962)  
at He.fire (workbench.desktop.main.js:55:3283)  
at osn.fire (workbench.desktop.main.js:43336:12156)  
at MessagePort. (workbench.desktop.main.js:47217:18406) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, error: {…}, …}  
error @ workbench.desktop.main.js:44241  
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:32182  
await in submitChatMaybeAbortCurrent  
Gs @ workbench.desktop.main.js:43415  
await in Gs  
onSubmit @ workbench.desktop.main.js:43415  
T @ workbench.desktop.main.js:43387  
onSubmit @ workbench.desktop.main.js:43387  
handleSubmit @ workbench.desktop.main.js:43290  
(anonymous) @ workbench.desktop.main.js:43292  
C$d @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
k$d @ workbench.desktop.main.js:453  
Zue @ workbench.desktop.main.js:453  
update @ workbench.desktop.main.js:455  
C$d @ workbench.desktop.main.js:453  
Td @ workbench.desktop.main.js:453  
$7b @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
workbench.desktop.main.js:44241 [composer] Model reset by fixUnavailable {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, subkey: ‘fix\_unavailable\_model\_reset’, …}  
\_log @ workbench.desktop.main.js:44241  
warn @ workbench.desktop.main.js:44241  
handleAvailableModelsChange @ workbench.desktop.main.js:32026  
refreshDefaultModels @ workbench.desktop.main.js:44241  
await in refreshDefaultModels  
(anonymous) @ workbench.desktop.main.js:44296  
await in (anonymous)  
(anonymous) @ workbench.desktop.main.js:44296  
workbench.desktop.main.js:44241 [transport] Stream error reported from extension host ConnectError: [not\_found] Error  
at o6g.$endAiConnectTransportReportError (workbench.desktop.main.js:43352:34726)  
at Nxt.\_doInvokeHandler (workbench.desktop.main.js:44181:23171)  
at Nxt.\_invokeHandler (workbench.desktop.main.js:44181:22913)  
at Nxt.\_receiveRequest (workbench.desktop.main.js:44181:21545)  
at Nxt.\_receiveOneMessage (workbench.desktop.main.js:44181:20362)  
at UCn.value (workbench.desktop.main.js:44181:18389)  
at He.\_deliver (workbench.desktop.main.js:55:2962)  
at He.fire (workbench.desktop.main.js:55:3283)  
at osn.fire (workbench.desktop.main.js:43336:12156)  
at MessagePort. (workbench.desktop.main.js:47217:18406) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, error: {…}, …}  
error @ workbench.desktop.main.js:44241  
$endAiConnectTransportReportError @ workbench.desktop.main.js:43352  
\_doInvokeHandler @ workbench.desktop.main.js:44181  
\_invokeHandler @ workbench.desktop.main.js:44181  
\_receiveRequest @ workbench.desktop.main.js:44181  
\_receiveOneMessage @ workbench.desktop.main.js:44181  
(anonymous) @ workbench.desktop.main.js:44181  
\_deliver @ workbench.desktop.main.js:55  
fire @ workbench.desktop.main.js:55  
fire @ workbench.desktop.main.js:43336  
(anonymous) @ workbench.desktop.main.js:47217  
workbench.desktop.main.js:44241 [transport] [AGENT\_ERROR\_DIAGNOSTICS] requestId=ed452fde-fe51-42ff-8267-658817ee1816 decision=THROW aXt {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, decision: ‘THROW aXt’, …}  
\_log @ workbench.desktop.main.js:44241  
warn @ workbench.desktop.main.js:44241  
log @ workbench.desktop.main.js:32116  
e @ workbench.desktop.main.js:464  
warn @ workbench.desktop.main.js:464  
run @ workbench.desktop.main.js:32116  
await in run  
run @ workbench.desktop.main.js:44360  
runAgentLoop @ workbench.desktop.main.js:44360  
streamFromAgentBackend @ workbench.desktop.main.js:44408  
await in streamFromAgentBackend  
getAgentStreamResponse @ workbench.desktop.main.js:44408  
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:32182  
await in submitChatMaybeAbortCurrent  
Gs @ workbench.desktop.main.js:43415  
await in Gs  
onSubmit @ workbench.desktop.main.js:43415  
T @ workbench.desktop.main.js:43387  
onSubmit @ workbench.desktop.main.js:43387  
handleSubmit @ workbench.desktop.main.js:43290  
(anonymous) @ workbench.desktop.main.js:43292  
C$d @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
k$d @ workbench.desktop.main.js:453  
Zue @ workbench.desktop.main.js:453  
update @ workbench.desktop.main.js:455  
C$d @ workbench.desktop.main.js:453  
Td @ workbench.desktop.main.js:453  
$7b @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
workbench.desktop.main.js:44241 [transport] [nal\_agent\_retries] Error not retryable {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, attempt: 0, …}  
\_log @ workbench.desktop.main.js:44241  
warn @ workbench.desktop.main.js:44241  
log @ workbench.desktop.main.js:32116  
e @ workbench.desktop.main.js:464  
warn @ workbench.desktop.main.js:464  
run @ workbench.desktop.main.js:32116  
await in run  
run @ workbench.desktop.main.js:44360  
runAgentLoop @ workbench.desktop.main.js:44360  
streamFromAgentBackend @ workbench.desktop.main.js:44408  
await in streamFromAgentBackend  
getAgentStreamResponse @ workbench.desktop.main.js:44408  
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:32182  
await in submitChatMaybeAbortCurrent  
Gs @ workbench.desktop.main.js:43415  
await in Gs  
onSubmit @ workbench.desktop.main.js:43415  
T @ workbench.desktop.main.js:43387  
onSubmit @ workbench.desktop.main.js:43387  
handleSubmit @ workbench.desktop.main.js:43290  
(anonymous) @ workbench.desktop.main.js:43292  
C$d @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
k$d @ workbench.desktop.main.js:453  
Zue @ workbench.desktop.main.js:453  
update @ workbench.desktop.main.js:455  
C$d @ workbench.desktop.main.js:453  
Td @ workbench.desktop.main.js:453  
$7b @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
workbench.desktop.main.js:32182 [composer] Error in AI response: undefined aXt: AI Model Not Found Model name is not valid: “gptoss20b”  
at jpA (workbench.desktop.main.js:32115:44798)  
at WpA (workbench.desktop.main.js:32115:43786)  
at ZpA (workbench.desktop.main.js:32116:5088)  
at Ool.run (workbench.desktop.main.js:32116:9098)  
at async s$o.runAgentLoop (workbench.desktop.main.js:44360:8423)  
at async zOl.streamFromAgentBackend (workbench.desktop.main.js:44408:8884)  
at async zOl.getAgentStreamResponse (workbench.desktop.main.js:44408:9837)  
at async yLe.submitChatMaybeAbortCurrent (workbench.desktop.main.js:32182:15752)  
at async Gs (workbench.desktop.main.js:43415:4781)Caused by: ConnectError: [not\_found] Error  
at o6g.$endAiConnectTransportReportError (workbench.desktop.main.js:43352:34726)  
at Nxt.\_doInvokeHandler (workbench.desktop.main.js:44181:23171)  
at Nxt.\_invokeHandler (workbench.desktop.main.js:44181:22913)  
at Nxt.\_receiveRequest (workbench.desktop.main.js:44181:21545)  
at Nxt.\_receiveOneMessage (workbench.desktop.main.js:44181:20362)  
at UCn.value (workbench.desktop.main.js:44181:18389)  
at He.\_deliver (workbench.desktop.main.js:55:2962)  
at He.fire (workbench.desktop.main.js:55:3283)  
at osn.fire (workbench.desktop.main.js:43336:12156)  
at MessagePort. (workbench.desktop.main.js:47217:18406)  
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:32182  
await in submitChatMaybeAbortCurrent  
Gs @ workbench.desktop.main.js:43415  
await in Gs  
onSubmit @ workbench.desktop.main.js:43415  
T @ workbench.desktop.main.js:43387  
onSubmit @ workbench.desktop.main.js:43387  
handleSubmit @ workbench.desktop.main.js:43290  
(anonymous) @ workbench.desktop.main.js:43292  
C$d @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
k$d @ workbench.desktop.main.js:453  
Zue @ workbench.desktop.main.js:453  
update @ workbench.desktop.main.js:455  
C$d @ workbench.desktop.main.js:453  
Td @ workbench.desktop.main.js:453  
$7b @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
workbench.desktop.main.js:44241 [composer] Error in AI response aXt: AI Model Not Found Model name is not valid: “gptoss20b”  
at jpA (workbench.desktop.main.js:32115:44798)  
at WpA (workbench.desktop.main.js:32115:43786)  
at ZpA (workbench.desktop.main.js:32116:5088)  
at Ool.run (workbench.desktop.main.js:32116:9098)  
at async s$o.runAgentLoop (workbench.desktop.main.js:44360:8423)  
at async zOl.streamFromAgentBackend (workbench.desktop.main.js:44408:8884)  
at async zOl.getAgentStreamResponse (workbench.desktop.main.js:44408:9837)  
at async yLe.submitChatMaybeAbortCurrent (workbench.desktop.main.js:32182:15752)  
at async Gs (workbench.desktop.main.js:43415:4781)Caused by: ConnectError: [not\_found] Error  
at o6g.$endAiConnectTransportReportError (workbench.desktop.main.js:43352:34726)  
at Nxt.\_doInvokeHandler (workbench.desktop.main.js:44181:23171)  
at Nxt.\_invokeHandler (workbench.desktop.main.js:44181:22913)  
at Nxt.\_receiveRequest (workbench.desktop.main.js:44181:21545)  
at Nxt.\_receiveOneMessage (workbench.desktop.main.js:44181:20362)  
at UCn.value (workbench.desktop.main.js:44181:18389)  
at He.\_deliver (workbench.desktop.main.js:55:2962)  
at He.fire (workbench.desktop.main.js:55:3283)  
at osn.fire (workbench.desktop.main.js:43336:12156)  
at MessagePort. (workbench.desktop.main.js:47217:18406) {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, error: {…}, …}arch: "x64"cause: {error: {…}, errorDetailsDebug: Array(1)}causeCode: 5causeErrno: "undefined"causeSyscall: undefinedchannel: "stable"client\_version: "2.5.25"composerId: "bb46e887-7dd3-4993-9e4b-86306305cc94"error: {message: ‘AI Model Not Found Model name is not valid: “gptoss20b”’, stack: ‘aXt: AI Model Not Found Model name is not valid: "…s/workbench/workbench.desktop.main.js:43415:4781)’, kind: ‘aXt’, code: undefined}errorCode: undefinederrorMessage: "aXt: AI Model Not Found Model name is not valid: "gptoss20b""errorType: undefinedisConnectError: "false"isRetryable: undefinedplatform: "win32"requestId: “ed452fde-fe51-42ff-8267-658817ee1816”[[Prototype]]: Object  
error @ workbench.desktop.main.js:44241  
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:32182  
await in submitChatMaybeAbortCurrent  
Gs @ workbench.desktop.main.js:43415  
await in Gs  
onSubmit @ workbench.desktop.main.js:43415  
T @ workbench.desktop.main.js:43387  
onSubmit @ workbench.desktop.main.js:43387  
handleSubmit @ workbench.desktop.main.js:43290  
(anonymous) @ workbench.desktop.main.js:43292  
C$d @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
k$d @ workbench.desktop.main.js:453  
Zue @ workbench.desktop.main.js:453  
update @ workbench.desktop.main.js:455  
C$d @ workbench.desktop.main.js:453  
Td @ workbench.desktop.main.js:453  
$7b @ workbench.desktop.main.js:453  
(anonymous) @ workbench.desktop.main.js:453  
workbench.desktop.main.js:44241 [composer] Model reset by fixUnavailable {arch: ‘x64’, platform: ‘win32’, channel: ‘stable’, client\_version: ‘2.5.25’, subkey: ‘fix\_unavailable\_model\_reset’, …}

### Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

---

<div class="post-metadata">

**Author:** ![deanrie](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/deanrie/32/1263_2.png) [@deanrie](https://forum.cursor.com/u/deanrie)\
**Post date:** [February 25, 2026, 6:05pm UTC](https://forum.cursor.com/t/connecting-local-ai-server-to-cursor-does-not-work/152940/3 "2026-02-25T18:05:00Z")

</div>

Hey, there are actually two issues here.

1. Localhost isn’t supported directly. All BYOK requests go through Cursor’s servers to build prompts, so `localhost` or local network addresses won’t work because the server can’t reach them. You’ll need to expose your Ollama instance as a public HTTPS endpoint using something like [ngrok](https://ngrok.com/) or [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/). Then use that public URL in Cursor Settings \> Models \> Override OpenAI Base URL.

Related thread with the same setup question: [How can I use a local LLM on my desktop/AI computer?](https://forum.cursor.com/t/how-can-i-use-a-local-llm-on-my-desktop-ai-computer/152419)

1. Model name validation bug. In your logs, `gpt-oss:20b` gets changed to `gptoss20bplain` because special characters like `-` and `:` are stripped out. As a result, the request goes to Cursor’s model registry instead of your local server.

Right now, even after setting up a tunnel, you may still hit this model name validation issue. As a workaround, try using a model name without special characters (if Ollama supports aliases).

Let me know if you’ve got any other questions.

---

<div class="post-metadata">

**Author:** ![bonf](https://avatars.discourse-cdn.com/v4/letter/b/258eb7/32.png) [@bonf](https://forum.cursor.com/u/bonf)\
**Post date:** [February 26, 2026, 12:22pm UTC](https://forum.cursor.com/t/connecting-local-ai-server-to-cursor-does-not-work/152940/4 "2026-02-26T12:22:36Z")

</div>

Thank you for the fast reply. Is there any chance that cursor might change this behaviour in the future?

We are using local AI only for projects where the customer requests this (usually due to safety concerns). I do not think a local AI that is exposed through ngrok helps here, unless we can make sure that this is really secure. Routing all requests through the cursor servers already breaks this for most customers that have security concerns using public AI agents.

---

<div class="post-metadata">

**Author:** ![system](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/system/32/99069_2.png) [@system](https://forum.cursor.com/u/system)\
**Post date:** [March 20, 2026, 12:23pm UTC](https://forum.cursor.com/t/connecting-local-ai-server-to-cursor-does-not-work/152940/5 "2026-03-20T12:23:00Z")

</div>

This topic was automatically closed 22 days after the last reply. New replies are no longer allowed.
