[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92726":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":15,"starSnapshotCount":15,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},92726,"codex-gpt-plugin","angieruiz17\u002Fcodex-gpt-plugin","angieruiz17","codex gpt plugin that gives agent a direct line to logged-in chatgpt pro session","",null,"JavaScript",132,1048,78,0,17,50.76,"MIT License",false,"main",true,[23,24,25,5,26,27,28,29],"agent-assistant","chatgpt-session","codex","codex-plugin","gpt","gpt-plugin","plugin","2026-07-22 04:02:06","# Codex Gpt Plugin\n\n**A Codex plugin that gives your agent a direct line to a logged-in ChatGPT Pro session.**\n\nCodex is great at execution. For the hard parts — architecture, system design,\nresearch synthesis, tradeoff calls, gnarly debugging strategy — you sometimes\nwant a second, stronger brain. Codex Gpt Plugin lets a Codex agent phone that\nbrain: it drives a real, logged-in **ChatGPT Pro** browser session, attaches\nyour repo as context, sends a message, reads the answer, and writes a receipt —\n**no API key, no password handling, no scraped cookies.**\n\nIt's a phone line, not a scraper.\n\n## Demo\n\nCodex Gpt Plugin call:\n\n[![Codex Gpt Plugin demo](docs\u002Fassets\u002Fchatgpt-pro-line-demo.gif)](docs\u002Fassets\u002Fchatgpt-pro-line-demo.mp4)\n\nRepo monofile attachment:\n\n[![Repo monofile attach demo](docs\u002Fassets\u002Frepo-monofile-attach.gif)](docs\u002Fassets\u002Frepo-monofile-attach.mp4)\n\n## Why\n\nThe strongest ChatGPT Pro reasoning isn't exposed on the API — it lives in the\nwebsite. So this bridges to the website, deliberately and safely. The human\nstays logged in; the automation is text-only and deterministic; and every call\nis recorded to disk. You get Pro-level collaboration inside your Codex loop\nwithout handing an agent your credentials.\n\nUse it for high-leverage work — architecture, specs, feature design, research\nsynthesis, tradeoff review, cross-repo planning, and hard debugging strategy.\nDon't spend the line on trivial syntax checks.\n\n## Major features\n\n- **Repo-scoped rooms.** ChatGPT conversations are bound to your git repo as\n  named rooms (`main`, `debug`, `critic`, `scratch`). Linked worktrees share a\n  repo's rooms; separate repos stay isolated. `main` means *this* repo's main —\n  never some other tab.\n- **Repo-as-context, in one file.** Generates a repomix-style `repo-context.md`\n  monofile (source tree, LOC, file bodies, line-range source map, hashes), blocks\n  secret-like paths\u002Fcontent before writing it, and uploads it only after explicit\n  confirmation.\n- **One persistent, logged-in profile.** A dedicated Chrome profile keeps you\n  logged in across calls and exposes CDP on `127.0.0.1:9222` for deterministic\n  control.\n- **Multi-agent safe.** A global browser-profile lock serializes every call, so\n  concurrent Codex agents never collide in the same ChatGPT window.\n- **Receipts + verbatim thread-echo.** Every call records the exact prompt and\n  response (with SHA-256 hashes), selected model\u002Fintelligence, lock timing,\n  conversation URL, a screenshot, and network\u002Fconsole logs.\n- **Visible history export.** Pull a bound room's visible ChatGPT history to\n  disk and reread it later without touching the browser — handy for picking up a\n  human-started thread.\n\n## Install\n\nAs a Codex plugin, from a local checkout:\n\n```bash\nnpm install\nnpm run plugin:sync\ncodex --enable plugins plugin marketplace add \"$PWD\"\ncodex --enable plugins plugin add codex-chatgpt-pro-plugin@codex-chatgpt-pro-plugin\n```\n\nFor source development, run the CLI directly:\n\n```bash\n.\u002Fbin\u002Fchatgpt-pro init\n.\u002Fbin\u002Fchatgpt-pro doctor --warm    # open the dedicated ChatGPT browser\n# complete the visible login if prompted\n.\u002Fbin\u002Fchatgpt-pro doctor --live    # verify login, composer, and model state\n```\n\nIf `doctor --live` reports `auth.login_required` (exit code `20`), finish login\nin the visible window and rerun `chatgpt-pro doctor --live`.\n\n## Quick start\n\n```bash\n# First call into this repo's main room\nchatgpt-pro call --alias=main --confirm-repo-context-upload --prompt=\"Review this repo's architecture and name the biggest risk.\"\n\n# Inspect repo room \u002F lock \u002F cache state without touching the browser\nchatgpt-pro status --alias=main\n\n# Open a clean, independent critic room and review a file\nchatgpt-pro rooms new --alias=critic\nchatgpt-pro call --alias=critic --prompt-file=review.md\n\n# Bind a ChatGPT thread you started by hand, then pull its history\nchatgpt-pro rooms rebind --alias=spec --conversation-url=https:\u002F\u002Fchatgpt.com\u002Fc\u002F...\nchatgpt-pro history export --alias=spec --last=20\n\n# Re-point or fix a room's target after drift\nchatgpt-pro rooms repair --alias=main\n```\n\nRoom lifecycle commands (`rooms new`, `rooms rebind`, `rooms repair`, and\n`rooms list\u002Fshow`) are repo-scoped, so the same alias can exist safely in\ndifferent repositories.\n\nBy default, `call` selects the live **Pro** intelligence level and detects when a\ngenerated `repo-context.md` would help. Generated repo context is secret-scanned\nand requires `--confirm-repo-context-upload` or\n`CHATGPT_CONFIRM_REPO_CONTEXT_UPLOAD=1` before it can be uploaded or inlined.\nUse `--repo-context=off` \u002F `--no-repo-context` or pass explicit scrubbed\n`--upload-file` artifacts for narrower calls.\n\n## How it works\n\n```text\nCodex agent\n   │  chatgpt-pro call --alias=main --prompt=\"…\"\n   ▼\nchatgpt-pro CLI ──acquire──►  global browser lock        (one agent at a time)\n   │\n   ▼\ndedicated Chrome profile ──CDP──►  chatgpt.com           (you are logged in)\n   │  • attach repo-context.md            │  Pro thinks + answers\n   │  • type prompt (Input.insertText)    ▼\n   └────────────────────────►  read the newest assistant turn (anchored)\n                                          │\n                                          ▼\n                  .devspace\u002Fruns\u002F\u003Cid>\u002F   receipt.json · transcript.md · final.png\n```\n\nThe canonical message path is text-only: DOM focus for the composer, CDP\n`Input.insertText` for the text, and a DOM button click to send. No OS-level\nmouse\u002Fkeyboard automation, no voice or dictation.\n\n## Safety posture\n\n- **You own the login.** Automation never types a password, OTP, or solves a\n  CAPTCHA, and never reads cookies or session storage. If login is needed, it\n  stops and asks you.\n- **Text-only, no OS automation.** No synthetic OS mouse\u002Fkeyboard, no voice. A\n  `test:non-interference` gate enforces the boundary.\n- **One profile, one lock.** A global browser-profile lock means concurrent\n  agents serialize cleanly instead of fighting over the window.\n- **Fails closed.** Ambiguous provenance produces a stable error code\n  (`auth.login_required`, `lock.busy`, `response.possibly_stale`, …) — never a\n  guessed answer.\n- **On the record.** The verbatim prompt and response, hashes, a screenshot, and\n  network\u002Fconsole logs land in `.devspace\u002Fruns\u002F\u003Cid>\u002F` for every call.\n\n## Thread echo\n\nInteractive Codex use keeps the exchange in the Codex session log. `call` prints\nthis block by default — paste it verbatim, don't summarize:\n\n```md\n## Message Sent To ChatGPT Pro\n\n...\n\n## Message Received From ChatGPT Pro\n\n...\n```\n\n## Command surface\n\nThe installed plugin exposes the `chatgpt-pro-line` skill and the `chatgpt-pro`\nCLI. Inside this source repo the same behavior is available via `npm run`:\n\n| Command | What it does |\n| --- | --- |\n| `npm run chrome` \u002F `chrome:headless` \u002F `chrome:debug` | Launch the dedicated ChatGPT browser (visible \u002F headless \u002F verbose) |\n| `npm run cdp:smoke` | Verify `\u002Fjson\u002Fversion` and `\u002Fjson\u002Flist` |\n| `npm run levels:list` \u002F `levels:set -- --level=Pro` | Read or select the live intelligence level |\n| `npm run choices:set -- --model=5.4` | Select the live model |\n| `npm run rooms:list` | List repo-owned rooms (no CDP) |\n| `npm run context:bundle -- --name=focused` | Build the repo-context monofile |\n| `npm run chatgpt:call -- --alias=main --message-file=prompt.md` | Source-repo alias for `chatgpt-pro call` |\n| `npm run history:export -- --alias=spec --last=20` | Export visible history |\n| `npm run plugin:sync` | Refresh the materialized install bundle |\n\nCommon runtime switches: `BROWSER_POSTURE=headed|headless`,\n`CHATGPT_DEFAULT_LEVEL` (default `Pro`), `CHATGPT_RESPONSE_TIMEOUT_MS`\n(default `240000`), `CHATGPT_REPO_CONTEXT_MODE=auto|upload|inline|off`,\n`CHATGPT_CONFIRM_REPO_CONTEXT_UPLOAD=1`, `CHATGPT_LOCK_TIMEOUT_MS` (default\n`600000`), `CHATGPT_PRO_REDIS_URL` (optional Redis for shared model-state cache\nand cross-host browser lock coordination), `BROWSER_OBSERVER=1` (print a run-inspector URL). See the contract\ndocs for the full list.\n\n### Redis (optional)\n\nWhen `CHATGPT_PRO_REDIS_URL` is set (for example `redis:\u002F\u002F127.0.0.1:6379`):\n\n- **Model-state cache** — `doctor --live` writes model\u002Fintelligence choices to the local file and Redis; `status` reads Redis when the local cache is missing or stale.\n- **Browser lock coordination** — acquires a Redis mutex before the existing filesystem profile lock, so two hosts sharing one ChatGPT browser profile do not collide.\n\nIf Redis is unset or unreachable, behaviour is unchanged from the filesystem-only path.\n\n```bash\ncp .env.example .env   # set CHATGPT_PRO_REDIS_URL when you want Redis enabled\ndocker compose up -d redis\nexport CHATGPT_PRO_REDIS_URL=redis:\u002F\u002F127.0.0.1:6379\n```\n\nOr run Redis standalone:\n\n```bash\ndocker run -d --name chatgpt-pro-redis -p 6379:6379 redis:7-alpine\nexport CHATGPT_PRO_REDIS_URL=redis:\u002F\u002F127.0.0.1:6379\n```\n\n## Tests\n\n```bash\nnpm run test:v1     # deterministic package gate (no browser, no login)\nnpm run test:live   # live browser proof suite (needs a logged-in ChatGPT)\n```\n\n- `npm test`: runs deterministic tests only — it does not require Chrome or a\n  logged-in ChatGPT website session.\n- `npm run test:v1` adds the v1 readiness gate on top of the deterministic\n  suite.\n- `npm run test:plugin-install` proves the materialized plugin installs into a\n  fresh Codex home from the local marketplace entry.\n- `npm run test:live` drives the real website: doctor, history export, room\n  rebind\u002Frepair, and the repo\u002Fthread isolation matrix.\n- Live proof scripts are `live:doctor`, `live:history-export`,\n  `live:rooms-rebind`, `live:rooms-repair`, and `live:repo-thread-matrix`.\n\n## Reference\n\n- [docs\u002Fchatgpt-call-contract.md](docs\u002Fchatgpt-call-contract.md) — the full call\n  contract: rooms, context tiers, concurrency, receipts, and the complete\n  failure-code list.\n- [docs\u002Fsubagent-browser-contract.md](docs\u002Fsubagent-browser-contract.md) — the\n  lower-level browser, login-boundary, and CDP details.\n\n## Repo layout\n\n- `bin\u002Fchatgpt-pro`, `src\u002F`, `scripts\u002F` — the CLI, runtime, and self-tests.\n- `skills\u002F`, `.codex-plugin\u002F`, `.agents\u002Fplugins\u002Fmarketplace.json` — the Codex\n  plugin surface.\n- `plugins\u002Fcodex-chatgpt-pro-plugin\u002F` — the materialized install bundle, kept in\n  sync from the root by `npm run plugin:sync` (don't edit it by hand).\n\n## License\n\nMIT © Haptica.\n","这是一个为Codex开发的插件，使本地AI代理能安全调用用户已登录的ChatGPT Pro网页会话，实现无需API密钥、不依赖Cookie抓取的双向协作。核心能力包括：基于Git仓库的上下文隔离会话（支持多房间）、自动生成脱敏的单文件代码上下文（repo-context.md）、复用持久化Chrome登录态、多代理并发安全控制，以及完整可审计的调用记录（含截图、日志与哈希校验）。适用于需要高阶推理支持的软件工程场景，如系统架构设计、跨仓库技术评审、复杂调试策略制定和研究型问题求解，避免将敏感凭证交予自动化工具。",2,"2026-07-10 02:30:17","CREATED_QUERY"]