Repository navigation
Description
Summary
Since 2.1.4, new sessions are created with an empty title and no title is
ever generated. The TUI session tab strip and the terminal window title
therefore have no subject to display. 2.0.24 titled every session on the same
machine, same provider and same model, so this is a version regression, not
a model or configuration issue.
Environment
- opencode version: 2.1.4 (previous: 2.0.24 — worked; 1.19.3 — worked)
- OS: Linux 7.2.8-9-omarchy (Arch, x86_64)
- Terminal: ghostty 1.3.1 (TERM=xterm-ghostty, COLORTERM=truecolor)
- Shell: /usr/bin/bash
- Install/channel: release binary, self-updated at 2026-10-26 11:37
- Model:
opencode/deepseek-v4.1-flash-free(also reproduces withglm-5.3-flash-free) - Active plugins: local JS plugins present, but the failure also reproduces with
opencode runin an empty scratch directory outside any project
Reproduction
- On 2.1.4, in an empty directory:
opencode run "Reply with just: ok". - Let the turn complete (reply is produced normally).
- The session row has
title = ''; the TUI tab strip and window title stay
empty. The title stays empty on every later update of the session too.
Expected Behavior
A short generated title (as on 2.0.24, e.g. "Change Win+E to opencode v2 and
update radial menu"), displayed in the tab strip and — with terminal.title: true — in the terminal window title.
Actual Behavior
Title stays empty. No title-generation request is visible in the logs, and the
2.1.4 binary retains only the rename API strings ("New session title", "Session
title changed") — the title prompt that 2.0.24 carried is absent. It looks like
the title agent is no longer scheduled on session creation rather than failing
loudly.
Additional Context
Version correlation from one machine's session DB (session_v2, grouped by the
version and model columns written per session). The model is constant
across the regression boundary, which rules out the reasoning-model cause
described in #42287:
version model sessions empty title
2.1.4 deepseek-v4.1-flash-free 5 5
2.1.4 glm-5.3-flash-free 1 1
2.0.24 deepseek-v4.1-flash-free 16 0
2.0.24 glm-5.3-flash-free 2 0
1.19.3 deepseek-v4.1-flash-free 5 0
1.18.32 deepseek-v4.1-flash-free 3 0
Timeline: 2.1.4 was installed at 2026-10-26 11:37; the first untitled session is
2026-10-26 11:38:48. The last titled session under 2.0.24 is 2026-10-26 02:28.
Config files were not modified between those two sessions.
Related but distinct: #54185 (title agent produces conversational replies in V2),
#58547/#58548 (empty titles on plugin session.update — here nothing ever fills
the title in the first place).
Workaround in use: terminal.title: true in the CLI config so the terminal title
tracks a title once one exists, plus manual session.rename (ctrl+r).
Activity
opencodejr commentedon Oct 27, 2026
Thanks for the detailed report and the per-version breakdown from your session DB. I think this is a duplicate of #58176.
That issue has been reproduced on 2.1.x with the free
opencode/*-freemodels, includingdeepseek-v4.1-flash-freeon 2.1.4 / Linux. The title request is still sent automatically after the first turn. In 2.1.4 the title step is still triggered (packages/core/src/session/runner/llm.tscalls it while the session is untitled), so it isn't the case that the title agent is no longer scheduled. The problem is that the free tier rejects the title request with403 FreeTierError, andSessionTitle.attemptdrops that error without logging it. The session stays untitled, and no title activity shows up in the logs. Your model staying the same across versions fits this, because the free tier only started rejecting these requests in 2.1.x.Possible duplicates and related issues, ordered by likelihood:
opencode/*models on 2.1.x, titles never generated, the failure is silent. A comment there describes a workaround: pointagent.title.model/small_modelat a non-opencodeprovider.403 FreeTierErrorcaptured. Closed as a duplicate of session: titles never generated in v2 (no auto trigger + free-tier rejection) #58176.<think>block) #42287: also untitled sessions, but caused by reasoning models. Different, as you noted.Your version table would be a useful addition on #58176. The bot will close this issue as a duplicate in 1 day unless you reply explaining how your problem is different.
opencodejr commentedon Oct 28, 2026
Closing this as a duplicate of #58176. We waited a day after the duplicate notice in case your problem turned out to be different, and haven't heard back.
#58176 has been reproduced on 2.1.x, including 2.1.4 on Linux with
opencode/deepseek-v4.1-flash-free. The title request is still sent automatically after the first turn, but the free tier rejects it with403 FreeTierError. That error is dropped without being logged, which is why your logs show no title activity. A comment there describes a workaround: pointagent.title.model(andsmall_model) at a non-opencodeprovider.Please follow #58176 for updates. Your per-version breakdown from
session_v2would be a useful addition there. If this turns out to be a different problem after all, reply here and we can reopen it. Thanks again for the detailed report!