cd /news/ai-ethics/prompt-submitted-to-cloud-even-when-… · home topics ai-ethics article
[ARTICLE · art-63566] src=github.com ↗ pub= topic=ai-ethics verified=true sentiment=↓ negative

Prompt submitted to cloud even when using local LLM by default

A bug in opencode sends user prompts to a public cloud endpoint at opencode.ai/zen/v1/responses even when a local LLM is configured, exposing data to OpenAI's GPT-5-nano model for title generation. The issue, filed as #15854, affects core functionality and raises privacy concerns for users expecting local-only processing.

read3 min views1 publishedJul 17, 2026
Prompt submitted to cloud even when using local LLM by default
Image: source

NotificationsYou must be signed in to change notification settings - Fork 23.4k

Copy link

Copy link

Closed as not planned

Labels

bugSomething isn't workingSomething isn't working

coreAnything pertaining to core functionality of the application (opencode server stuff)Anything pertaining to core functionality of the application (opencode server stuff)

Description #

Description

When using a local model, opencode still sends your prompt to public cloud endpoint https://opencode.ai/zen/v1/responses to get a title summary.

For example:

opencode run this is a test

or even with an explicit model

opencode -m local/Qwen/Qwen-Next-Coder run this is a test

causes opencode to generate a request

POST /zen/v1/responses HTTP/2
Host: opencode.ai
Authorization: Bearer public
Content-Type: application/json
User-Agent: ai-sdk/openai/2.0.89 ai-sdk/provider-utils/3.0.20 runtime/bun/1.3.10
X-Opencode-Client: cli
X-Opencode-Project: global
X-Opencode-Request: msg_cb41776da0013RO7pnTvyuSA0h
X-Opencode-Session: ses_34be88938ffewkdc070WPvraqG
Connection: keep-alive
Accept: */*
Accept-Encoding: gzip, deflate, br
Content-Length: 2574

{
  "model": "gpt-5-nano",
  "input": [
    {
      "role": "developer",
      "content": "You are a title generator. You output ONLY a thread title. Nothing else.\n\n<task>\nGenerate a brief title that would help the user find this conversation later.\n\nFollow all rules in <rules>\nUse the <examples> so you know what a good title looks like.\nYour output must be:\n- A single line\n- ≤50 characters\n- No explanations\n</task>\n\n<rules>\n- you MUST use the same language as the user message you are summarizing\n- Title must be grammatically correct and read naturally - no word salad\n- Never include tool names in the title (e.g. \"read tool\", \"bash tool\", \"edit tool\")\n- Focus on the main topic or question the user needs to retrieve\n- Vary your phrasing - avoid repetitive patterns like always starting with \"Analyzing\"\n- When a file is mentioned, focus on WHAT the user wants to do WITH the file, not just that they shared it\n- Keep exact: technical terms, numbers, filenames, HTTP codes\n- Remove: the, this, my, a, an\n- Never assume tech stack\n- Never use tools\n- NEVER respond to questions, just generate a title for the conversation\n- The title should NEVER include \"summarizing\" or \"generating\" when generating a title\n- DO NOT SAY YOU CANNOT GENERATE A TITLE OR COMPLAIN ABOUT THE INPUT\n- Always output something meaningful, even if the input is minimal.\n- If the user message is short or conversational (e.g. \"hello\", \"lol\", \"what's up\", \"hey\"):\n  → create a title that reflects the user's tone or intent (such as Greeting, Quick check-in, Light chat, Intro message, etc.)\n</rules>\n\n<examples>\n\"debug 500 errors in production\" → Debugging production 500 errors\n\"refactor user service\" → Refactoring user service\n\"why is app.js failing\" → app.js failure investigation\n\"implement rate limiting\" → Rate limiting implementation\n\"how do I connect postgres to my API\" → Postgres API connection\n\"best practices for React hooks\" → React hooks best practices\n\"@src/auth.ts can you add refresh token support\" → Auth refresh token support\n\"@utils/parser.ts this is broken\" → Parser bug fix\n\"look at @config.json\" → Config review\n\"@App.tsx add dark mode toggle\" → Dark mode toggle in App\n</examples>\n"
    },
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Generate a title for this conversation:\n"
        }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "this is a test"
        }
      ]
    }
  ],
  "max_output_tokens": 32000,
  "store": false,
  "include": [
    "reasoning.encrypted_content"
  ],
  "reasoning": {
    "effort": "minimal"
  },
  "stream": true
}

This has leaked your private prompt text to the opencode API.

It can be disabled using

  "agent":{
    "title": {
      "disable":true
    }
  }

The default should be either disabled, or to use the model you specify.

Plugins

None

OpenCode version

1.2.15

Steps to reproduce

Configure a local model

export https_proxy=http://127.0.0.1:8080

export NODE_TLS_REJECT_UNAUTHORIZED=0

run Burp proxy or similar to capture requests

run:

opencode run this is a test

Check Burp to see the request to opencode.ai with "this is a test"

Screenshot and/or share link

No response

Operating System

Ubuntu 24

Terminal

No response

Reactions are currently unavailable

Metadata #

Metadata #

Assignees

Labels

bugSomething isn't workingSomething isn't working

coreAnything pertaining to core functionality of the application (opencode server stuff)Anything pertaining to core functionality of the application (opencode server stuff)

Type

Fields

No fields configured for issues without a type.

── more in #ai-ethics 4 stories · sorted by recency
── more on @opencode 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/prompt-submitted-to-…] indexed:0 read:3min 2026-07-17 ·