Skip to content

session: 2.1.4 creates sessions with an empty title — no title generated on any update path #59703

Closed as duplicate

Description

@legioncollective

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 with glm-5.3-flash-free)
  • Active plugins: local JS plugins present, but the failure also reproduces with
    opencode run in an empty scratch directory outside any project

Reproduction

  1. On 2.1.4, in an empty directory: opencode run "Reply with just: ok".
  2. Let the turn complete (reply is produced normally).
  3. 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

  1. opencodejr commented on Oct 27, 2026

    @opencodejr
    Contributor

    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/*-free models, including deepseek-v4.1-flash-free on 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.ts calls 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 with 403 FreeTierError, and SessionTitle.attempt drops 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:

    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.

  2. opencodejr commented on Oct 28, 2026

    @opencodejr
    Contributor

    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 with 403 FreeTierError. That error is dropped without being logged, which is why your logs show no title activity. A comment there describes a workaround: point agent.title.model (and small_model) at a non-opencode provider.

    Please follow #58176 for updates. Your per-version breakdown from session_v2 would 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!

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions