fix: v0.2.1 — chunked ChatGPT cookies and Claude project path
- Support __Secure-next-auth.session-token.0/.1 split cookies; ChatGPT now issues tokens that exceed the 4KB per-cookie limit and must be sent as two named chunks or the auth endpoint returns no accessToken. Add CHATGPT_SESSION_TOKEN_1 env var; update auth wizard instructions. - Fix Claude conversations exported to wrong directory when project name is present in the listing but absent from the detail endpoint response. Explicitly propagate "project" alongside _-prefixed annotation keys. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,7 @@ class ChatGPTProvider(BaseProvider):
|
||||
def __init__(
|
||||
self,
|
||||
session_token: str | None = None,
|
||||
session_token_1: str | None = None,
|
||||
project_ids: list[str] | None = None,
|
||||
) -> None:
|
||||
# Pass a curl_cffi session to the base class instead of a requests.Session.
|
||||
@@ -82,6 +83,10 @@ class ChatGPTProvider(BaseProvider):
|
||||
)
|
||||
self._session_token = token
|
||||
|
||||
# Second chunk of the session token (ChatGPT splits large cookies into
|
||||
# __Secure-next-auth.session-token.0 and .1 to stay under the 4KB limit).
|
||||
token_1 = session_token_1 or os.getenv("CHATGPT_SESSION_TOKEN_1", "").strip() or None
|
||||
|
||||
# Project gizmo IDs (g-p-xxx) whose conversations we'll fetch.
|
||||
# ChatGPT project conversations do not appear in the default
|
||||
# /conversations listing — they require explicit project IDs.
|
||||
@@ -93,13 +98,24 @@ class ChatGPTProvider(BaseProvider):
|
||||
# Cache of project_id → display name (avoids re-fetching gizmo details)
|
||||
self._project_name_cache: dict[str, str] = {}
|
||||
|
||||
# Set the session cookie in the cookie jar
|
||||
# ChatGPT now splits large session cookies into .0 / .1 chunks.
|
||||
# Always send both named chunks; the server reassembles them.
|
||||
self._session.cookies.set(
|
||||
"__Secure-next-auth.session-token",
|
||||
"__Secure-next-auth.session-token.0",
|
||||
token,
|
||||
domain="chatgpt.com",
|
||||
path="/",
|
||||
)
|
||||
if token_1:
|
||||
self._session.cookies.set(
|
||||
"__Secure-next-auth.session-token.1",
|
||||
token_1,
|
||||
domain="chatgpt.com",
|
||||
path="/",
|
||||
)
|
||||
logger.debug("[chatgpt] Set both session cookie chunks (.0 and .1)")
|
||||
else:
|
||||
logger.debug("[chatgpt] Set session cookie chunk .0 only (no .1 configured)")
|
||||
|
||||
# Set only Referer and sec-fetch-* headers for the auth exchange.
|
||||
# Origin is intentionally omitted: Chrome does not send Origin on
|
||||
|
||||
Reference in New Issue
Block a user