一句话总结(中文):当前自动保存线程的标题很容易被 system prompt / AGENTS / environment preamble 覆盖,导致用户无法从外部快速判断对话主题;建议在对话前几轮维护一个 provisional title,并在保存时优先采用。
Is your feature request related to a problem? Please describe.
When threads are auto-saved, the resulting title is often derived from the beginning of the transcript. In practice, the beginning of a session may contain system prompts, AGENTS instructions, environment context, resume wrappers, or other injected preambles before the first real user task appears.
Because of that, the final saved title can be dominated by preamble text instead of the actual topic of the conversation. From the outside thread list, the title may technically be non-empty, but it is not useful as a human-facing summary.
This becomes especially painful when browsing many saved sessions. I often need to quickly scan the thread list and understand what each conversation is about. Right now, some auto-saved titles reflect setup/context boilerplate rather than the user's actual request, which makes the saved thread list much less useful.
A concrete example of the pain point:
- the conversation itself is about debugging or designing a specific behavior,
- but the saved title ends up looking like a generic preamble or injected context,
- so from outside the thread, I cannot tell what the conversation was actually about.
In short: the title is being captured too early by transcript scaffolding instead of reflecting the semantic topic of the session.
Describe the solution you'd like
I’d like auto-saved threads to support an early, provisional title that is based on the first meaningful user request rather than raw transcript preamble.
A possible design:
- Maintain a lightweight per-session metadata object (or sidecar JSON) during the conversation.
- As soon as the first meaningful user request appears, generate and store a
proposed_title.
- Allow limited updates during the first few turns if the task becomes more specific.
- Once the conversation stabilizes (or before save), mark the title as stable/locked.
- When saving the thread, prefer this stored title over save-time transcript-derived title extraction.
- If no stored title exists, fall back to the current rule-based derivation.
This would preserve the current behavior as a fallback while making the human-facing thread title much more useful in real usage.
A minimal metadata shape could be something like:
{
"proposed_title": "Debug auto-saved thread title generation",
"title_status": "provisional",
"title_source": "conversation",
"updated_at": "2026-04-16T00:00:00Z",
"locked": false
}
Or even simpler for a first iteration:
{
"proposed_title": "..."
}
The important part is not the exact schema, but the idea that title generation becomes a small piece of session metadata maintained during the conversation, rather than something inferred only from the beginning of the transcript at save/import time.
Describe alternatives you've considered
I’ve considered a few alternatives:
-
Improve the current rule-based extraction to skip more preambles
- This is worth doing anyway.
- For example, the save logic could better ignore AGENTS instructions, environment wrappers, resume markers, or similar scaffold content.
- However, this still keeps title derivation entirely at save time, which means it can still miss the actual user-facing topic when the task evolves over several turns.
-
Generate a title only at save time with an LLM
- This could produce better titles in some cases.
- But it feels heavier than necessary if the main goal is just to capture the conversation topic.
- It may also be undesirable to introduce an extra dedicated model call purely for naming.
-
Let certain skills explicitly provide a title
- This could be useful as an override or hint.
- But it probably should not be the only mechanism, because not every conversation enters through the same skill path.
-
Continue using only the first valid user message
- This is lightweight and deterministic.
- But in practice it still fails when transcript structure or prompt wrappers obscure where the “real conversation” actually begins.
My preferred direction is:
- keep the current save-time rule-based derivation as fallback,
- but introduce a lightweight per-session
proposed_title that can be set early from the real conversation.
Additional context
From inspecting the current Codex integration logic, it looks like the current title is derived during save/import from the parsed transcript, rather than from a conversation-level metadata field maintained throughout the session.
That design is understandable and simple, but it means the saved title is vulnerable to whatever happens to appear first in the raw transcript structure.
In real usage, what users usually want is not “the first parseable text fragment,” but “a short title that helps me recognize this conversation later from the thread list.”
That is why I think a small provisional-title mechanism would be a meaningful usability improvement.
Some implementation details that seem reasonable:
- generate the initial title from the first meaningful user request,
- allow limited updates only in the early turns,
- avoid title thrashing later in the conversation,
- lock/finalize before save,
- still keep existing transcript-based derivation as fallback,
- optionally allow skill-provided explicit titles as a higher-priority override.
Practical pain point again in one sentence: from the outside thread list, I need to quickly know what each conversation is about; right now some auto-saved titles are populated, but not actually useful because they reflect system scaffolding rather than the real task.
If this direction sounds reasonable and there isn’t already an internal design preference, I’d be happy to help with a PR later.
一句话总结(中文):当前自动保存线程的标题很容易被 system prompt / AGENTS / environment preamble 覆盖,导致用户无法从外部快速判断对话主题;建议在对话前几轮维护一个 provisional title,并在保存时优先采用。
Is your feature request related to a problem? Please describe.
When threads are auto-saved, the resulting title is often derived from the beginning of the transcript. In practice, the beginning of a session may contain system prompts, AGENTS instructions, environment context, resume wrappers, or other injected preambles before the first real user task appears.
Because of that, the final saved title can be dominated by preamble text instead of the actual topic of the conversation. From the outside thread list, the title may technically be non-empty, but it is not useful as a human-facing summary.
This becomes especially painful when browsing many saved sessions. I often need to quickly scan the thread list and understand what each conversation is about. Right now, some auto-saved titles reflect setup/context boilerplate rather than the user's actual request, which makes the saved thread list much less useful.
A concrete example of the pain point:
In short: the title is being captured too early by transcript scaffolding instead of reflecting the semantic topic of the session.
Describe the solution you'd like
I’d like auto-saved threads to support an early, provisional title that is based on the first meaningful user request rather than raw transcript preamble.
A possible design:
proposed_title.This would preserve the current behavior as a fallback while making the human-facing thread title much more useful in real usage.
A minimal metadata shape could be something like:
{ "proposed_title": "Debug auto-saved thread title generation", "title_status": "provisional", "title_source": "conversation", "updated_at": "2026-04-16T00:00:00Z", "locked": false }Or even simpler for a first iteration:
{ "proposed_title": "..." }The important part is not the exact schema, but the idea that title generation becomes a small piece of session metadata maintained during the conversation, rather than something inferred only from the beginning of the transcript at save/import time.
Describe alternatives you've considered
I’ve considered a few alternatives:
Improve the current rule-based extraction to skip more preambles
Generate a title only at save time with an LLM
Let certain skills explicitly provide a title
Continue using only the first valid user message
My preferred direction is:
proposed_titlethat can be set early from the real conversation.Additional context
From inspecting the current Codex integration logic, it looks like the current title is derived during save/import from the parsed transcript, rather than from a conversation-level metadata field maintained throughout the session.
That design is understandable and simple, but it means the saved title is vulnerable to whatever happens to appear first in the raw transcript structure.
In real usage, what users usually want is not “the first parseable text fragment,” but “a short title that helps me recognize this conversation later from the thread list.”
That is why I think a small provisional-title mechanism would be a meaningful usability improvement.
Some implementation details that seem reasonable:
Practical pain point again in one sentence: from the outside thread list, I need to quickly know what each conversation is about; right now some auto-saved titles are populated, but not actually useful because they reflect system scaffolding rather than the real task.
If this direction sounds reasonable and there isn’t already an internal design preference, I’d be happy to help with a PR later.