# Chatgpt Pro Async Delegate

> Submit deep-analysis prompts to the logged-in ChatGPT Pro web app, track them asynchronously via local task metadata under /tmp, and later reopen the conversation to recover the final response markdown. Use when asked to hand work to ChatGPT Pro, submit a Pro analysis task, check whether a Pro task has finished, or pull the result back into Codex.

- Skill: `joeeeeey/chatgpt-pro-async-delegate` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add joeeeeey/chatgpt-pro-async-delegate`
- Raw SKILL.md: https://api.skillmd.com/api/skills/joeeeeey/chatgpt-pro-async-delegate/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: joeeeeey (https://skillmd.com/u/joeeeeey)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/joeeeeey/chatgpt-pro-async-delegate

---


# ChatGPT Pro Async Delegate

Use `src/chatgpt-pro-task.ts`.

For the full end-to-end architecture and publish-ready flow notes, read:

- `docs/chatgpt-pro-async-delegate-README.md`
- `docs/chatgpt-login-session-README.md`

## Default rules

- Prefer visible Chrome (`--channel chrome`, `--headless 0`) for stability.
- Default effort is `standard`.
- Upgrade to `extended` only when the user explicitly asks for very deep / high-intensity / deeply researched analysis.
- Persist every task under `/tmp/codex-chatgpt-pro-tasks/<task_id>/`.
- Do not wait synchronously for long-running Pro tasks unless the user explicitly wants a blocking check.
- **NEVER substitute ChatGPT Pro with Codex GPT-5.4 extra_high reasoning.** ChatGPT Pro extended deep research is a different workflow with much longer tool-assisted analysis.
- On slow networks, ChatGPT may take 30-60s to fully load. Wait for Playwright page loading to settle and for the composer UI to become interactive before clicking model / Pro / send buttons.

## Auth session prerequisites

- This skill depends on a valid ChatGPT `session.json`.
- Preferred location:
  - `data/accounts/account-your-email@example.com/session.json`
- Obtain it by composing the existing login/session flow:

```bash
npm run chatgpt-login:session -- --account data/accounts/account-your-email@example.com --otp-provider mail.com --secrets-file /path/to/temp.env --channel chrome --verbose 1
npm run chatgpt-auth:session -- --account data/accounts/account-your-email@example.com
```

- `chatgpt-auth:session` now saves to `<account-dir>/session.json` by default.
- `chatgpt-auth:session` expects a **real logged-in persistent browser profile** for that account.
- If it cannot extract `sessionToken + user + account`, it now fails explicitly instead of writing a fake partial file.
- Do not rely on `storage_state.json` alone for ChatGPT Pro delegation.

## Context Supply Requirement

When handing a **deep research** task to ChatGPT Pro, provide as much context as possible.

Minimum recommendation:
- upload **at least 5 files** when the task is complex
- prefer a mix of docs, code, configs, screenshots, and data samples

Priority order:
1. PRD / requirements docs
2. relevant source files or zipped code folders
3. screenshots / UI captures
4. API responses / sample data / schemas
5. architecture docs / notes / diagrams

Example:

```bash
npm run chatgpt-pro:submit -- \
  --account account-your-email@example.com \
  --prompt-file /tmp/prompt.md \
  --attach /tmp/context/prd.md \
  --attach /tmp/context/src-components.zip \
  --attach /tmp/context/screenshot-1.png \
  --attach /tmp/context/data-sample.json \
  --attach /tmp/context/architecture.md \
  --effort extended \
  --json
```

For serious analysis, you should **err on the side of over-supplying context** rather than under-supplying it.

## Submit a task

1. Put the full prompt in a markdown/text file, or pass it through stdin.
2. Run:

```bash
npm run chatgpt-pro:submit -- --account account-your-email@example.com --prompt-file /path/to/prompt.md --source codex --json
```

Or:

```bash
cat /path/to/prompt.md | npm run chatgpt-pro:submit -- --account account-your-email@example.com --source codex --json
```

Or explicitly choose a session file:

```bash
npm run chatgpt-pro:submit -- --session data/accounts/account-your-email@example.com/session.json --prompt-file /path/to/prompt.md --json
```

3. Report back:
   - submitted successfully or not
   - current status
   - effort (`standard` / `extended`)
   - local task dir
   - conversation URL / UUID
   - screenshot path
   - tell the user to come back with “检查任务状态” / “取回结果”

## Check a task

- Latest task:

```bash
npm run chatgpt-pro:check -- --task latest --json
```

- Specific task:

```bash
npm run chatgpt-pro:check -- --task <uuid-or-task-id> --json
```

- Blocking E2E verification for a simple prompt:

```bash
npm run chatgpt-pro:check -- --task latest --wait 1 --timeout-ms 120000 --poll-interval-ms 5000 --json
```

If you need to force a specific account/session at check time:

```bash
npm run chatgpt-pro:check -- --task latest --account account-your-email@example.com --json
```

Report back:
- current status
- last checked time
- local task dir
- result file path if completed
- screenshot path
- failure reason if failed / unknown

## Status interpretation

- `created`: local task scaffold created, not yet submitted
- `submitted`: prompt sent and conversation URL captured
- `thinking`: ChatGPT is still generating
- `completed`: `response.md` saved locally
- `failed`: a hard error happened; inspect metadata and screenshot
- `unknown`: the page loaded but the state could not be determined reliably

## Local files

Each task dir should contain at least:

- `metadata.json`
- `prompt.md`
- `response.md` when completed
- `events.log`
- `screenshots/*.png`

`metadata.json` should record:
- `session_path`
- `account_ref` / `account_dir` / `account_email` when known
- `chat_url`
- `conversation_uuid`
- `effort`
- `status`
- `result_file`

## Reporting discipline

- Never claim completion unless `response.md` exists.
- When state is uncertain, report `unknown`.
- Always include the local task dir and a screenshot path in your final reply.

