Scope local history discovery to the current ChatGPT account (#58918)

## What changed

- Add `currentAccountOnly` to `thread/list` and `thread/search`, defaulting to `false`, and enable it for TUI history discovery, resume pickers, and task mentions.
- Mark newly created threads as account-scoped and require each recorded creator user or account ID to match the current login. Older threads and threads without creator IDs remain shared; API-key logins continue to see all local history.
- Preserve account scope through resume and revert, including fallback to original rollout metadata when an older binary drops the marker. Forks receive new-thread scope.
- Skip unreadable rollout headers in scoped discovery and filter search candidates before reading snippets. Direct access by thread ID remains available.

## Testing

Add coverage for account matching, shared legacy history, list page refilling, search pagination, API-key visibility, and scope preservation across reverts. Extend rollout lookup coverage to compressed active and archived files.

GitOrigin-RevId: aa374f5e69165be5a71c0716ded1b105f5fb51e0
This commit is contained in:
jif
2026-11-02 16:00:20 +00:00
committed by copyberry
parent 6c4fa86838
commit 8806313db4
55 changed files with 559 additions and 15 deletions
@@ -10857,6 +10857,13 @@ class ThreadListParams(BaseModel):
description="Optional archived filter; when set to true, only archived threads are returned. If false or null, only non-archived threads are returned."
),
] = None
current_account_only: Annotated[
bool | None,
Field(
alias="currentAccountOnly",
description="Show local history visible to the current ChatGPT account. Defaults to false.",
),
] = None
cursor: Annotated[
str | None, Field(description="Opaque pagination cursor returned by a previous call.")
] = None