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.