Codex赠送的重置机会,要在获得日期起30天内用掉,但界面上没有显示具体的日期,也容易忘掉,所以我让codex帮写了一段话:
# 把下面这段发给Codex,就可以查询重置机会的过期时间
——
## 查询 Codex reset credits 过期时间
用途:查看 Codex 里可用的 reset credits 分别什么时候过期。
前提:
- 已安装并登录 Codex Desktop / Codex CLI
- 本机存在 `~/.codex/auth.json`
- 只在自己电脑本地运行
- 不要把 `~/.codex/auth.json` 或 token 发给任何人
把下面内容保存为 `codex_reset_expiry.py`:
```python
#!/usr/bin/env python3
import json
import urllib.request
from pathlib import Path
from datetime import datetime
auth_path = Path("~/.codex/auth.json").expanduser()
if not auth_path.exists():
raise SystemExit("No ~/.codex/auth.json found. Please sign in to Codex first.")
auth = json.loads(auth_path.read_text())
tokens = auth.get("tokens") or {}
token = tokens.get("access_token")
account = tokens.get("account_id") or ""
if not token:
raise SystemExit("No access_token found. Please sign in to Codex first.")
req = urllib.request.Request(
"http://t.cn/AXa1Q7Vx",
headers={
"Authorization": f"Bearer {token}",
"ChatGPT-Account-ID": account,
"OpenAI-Beta": "codex-1",
"originator": "Codex Desktop",
"User-Agent": "Codex Desktop",
"Accept": "application/json",
},
)
try:
data = json.loads(urllib.request.urlopen(req, timeout=30).read().decode())
except Exception as e:
raise SystemExit(f"Request failed: {e}")
credits = data.get("credits", [])
available = [c for c in credits if c.get("status") == "available"]
print(f"{data.get('available_count', len(available))} resets available")
for i, credit in enumerate(available, 1):
expires_at = credit.get("expires_at")
if not expires_at:
print(f"Reset {i} expires: unknown")
continue
dt = datetime.fromisoformat(expires_at.replace("Z", "+00:00")).astimezone()
print(f"Reset {i} expires: {dt.strftime('%b %d, %Y %I:%M %p')}")
```
运行:
```bash
python3 codex_reset_expiry.py
```
示例输出:
```text
4 resets available
Reset 1 expires: Jul 12, 2026 10:20 AM
Reset 2 expires: Jul 12, 2026 10:48 AM
Reset 3 expires: Jul 12, 2026 11:18 AM
Reset 4 expires: Jul 18, 2026 08:30 AM
```
注意:
- 不要分享 `~/.codex/auth.json`
- 不要把 token 贴给任何人
- 这个接口是 ChatGPT/Codex 内部接口,不是公开 API,以后可能变化或失效
