CodexPortalSAFE
OpenAI Codex desktop manager for seamless account switching, live quotas, configuration, MCP, skills and sessions. macOS & Windows. No model API reverse proxy.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Codex Portal
macOS / Windows 上的 Codex 桌面管理工具,支持无感账号切换、实时额度、配置、MCP、Skill 与会话管理。
下载最新版本 · 反馈问题
解决什么问题
将 Codex 的账号、额度、配置和会话集中管理,减少手动换账号、修改配置和查找会话的操作。
无感自动切换:达到额度阈值后自动换号,替换本地 auth.json 并重启 app-server。支持恢复的官方 Codex 会自动重连、继续符合恢复条件的任务,无需手动重启 CLI。
本项目提供本地管理功能,不涉及模型接口反代或第三方 API 中转。
下载安装
从 GitHub Releases 下载适合本机的文件。macOS 打开 DMG 后将 Codex Portal 拖入 Applications;Windows 将便携 EXE 保存到有写入权限的目录,直接运行。
当前仓库版本为 0.3.7。生产版本可在“关于”页面检查、下载并安装更新;Windows 更新后替换原 EXE 并重新启动。
支持范围
面向 OpenAI 官方订阅账号,支持独立安装的 Codex CLI 与带本地 Codex 功能的 ChatGPT 桌面版。可只安装其中之一,或两者同时安装;Portal 会分别探测引擎并尝试连接可用服务。
按原方式启动 Codex TUI,或在 ChatGPT 桌面版中发起本地 Codex 会话。实时额度与活跃会话需要客户端提供可接入的本地 app-server 控制入口;任务恢复还需要客户端支持相应功能。
可在“Codex 信息”分别查看 CLI 与 ChatGPT 桌面内置引擎版本。连接异常时,“实时日志”会显示引擎来源与失败阶段,便于区分安装位置、命令兼容和服务连接问题。
功能
账号与订阅额度
- 多账号管理:支持 PAT、Refresh Token 与 OAuth 登录,提供备注、编辑、删除、订阅筛选与首次本地账号导入。
- 一键切换:从界面或系统托盘切换当前账号。
- 实时额度:展示官方推送的短周期、长周期剩余额度和重置时间,支持手动刷新。
- 连接兼容:自动探测 CLI 与 ChatGPT 桌面内置引擎的已有服务,支持连接回退及不同版本的会话订阅参数。
- 自动切换:总开关默认开启,每个账号可设置 0%–100% 的剩余额度阈值,默认 0%。例如设为 5%,任一窗口剩余 ≤ 5% 时自动切换。
- 优先切换:在可用账号中选择短周期下一次重置时间最近的账号。
- 账号测试与窗口激活:查看模型回复、刷新额度,支持自动激活;此类请求会消耗账号额度。
- 重置卡:支持的 Team 账号可查看重置次数、明细并使用重置卡。
配置与扩展
- 可视化配置:编
ff6703044a24OBSERVED · 2026-10-13Install
Commands as the repository documents them. They are shown, not run.
git clone https://github.com/kohlarnhin/CodexPortal.git
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| codex | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: codex-portal-release description: Project-specific development, versioning, and release workflow for /Users/zhujiangyong/Software/codex-portal. Use whenever Codex changes this React/Tauri repository, implements account or configuration features, updates the application version, prepares a release, or is explicitly asked to publish a Codex Portal version. --- # Codex Portal Development and Release ## Scope Apply this workflow only inside `/Users/zhujiangyong/Software/codex-portal`. Treat saved `auth.json` content, tokens, account email addresses, and the local SQLite database as secrets. Never print real credential content, read the user's live `~/.codex/auth.json` merely to inspect its shape, or place credentials in source, fixtures, logs, screenshots, or tool output. ## Start Work 1. Inspect the current branch and worktree with `git status --short` before editing. 2. Preserve all existing user changes and avoid unrelated rewrites. 3. Resolve implementation details from the repository when the requested behavior is sufficiently determined. Ask one concise question only when different interpretations would materially change behavior. 4. Keep React UI changes consistent with the existing compact monochrome desktop design. Organize Rust commands and data access by business module; keep `src-tauri/src/lib.rs` focused on application startup, shared-state initialization, and command registration. Outside an explicitly authorized release, do not create or switch branches, commit, push, tag, or open a pull request unless the user asks for that Git operation. During a release, perform the necessary Git operations under the release workflow below. ### Commit Scope Unless the user explicitly requests a limited commit, every authorized commit includes all current workspace changes: tracked modifications and deletions, plus non-ignored untracked files. Inspect the full diff, then use `git add -A` from the repository root. Do not limit the commit to the current task, files edited by Codex, or changes made during the current session. Preserve existing file contents when including other work; inclusion does not authorize unrelated rewrites. This full-workspace default was adopted from the user's explicit correction on 2026-09-10. ### Branch Naming When branch creation is authorized, name the branch after the current date in the session's timezone: `YYYY-MM-DD` (for example, `2026-09-08`). If that name already exists locally or in known remote refs, use the first available suffix starting at `-2`, then `-3`, and so on: `2026-09-08-2`, `2026-09-08-3`. Use the date alone, without prefixes such as `feat/`, `feature/`, or `codex/`, and without feature or task names. Keep all existing uncommitted changes on the new branch; creating a branch does not authorize committing or pushing them. Continue using the current branch unless another branch operation is requested. ## Implement Changes - Keep frontend pages and components in `src/`, shared hooks in `src/hooks/`, utilities in `src/utils/`, and account types in `src/types/`. - Under `src-tauri/src/`, keep account management in `accounts/`, authentication in `auth/`, session parsing/sync/statistics in `sessions/`, and Codex configuration/version detection in `codex/`. Keep shared runtime state in `state.rs`, database initialization in `db.rs`, common HTTP and timestamp helpers in `http.rs` and `time.rs`, and skill/update management in `skills.rs` and `updates.rs`. - Keep module dependencies explicit and expose only the types and functions needed by callers. When tests are explicitly requested, keep unit tests with their owning module. During structural refactors, preserve Tauri command names and serialized fields, database migrations, transaction/lock boundaries, scheduler behavior, and credential handling. - Preserve raw account and authentication data. Apply masking or formatting only at the presentation boundary unless the user explicitly requests a data migration. - Prefer browser-native APIs and existing dependencies. Do not install packages merely for small parsing, formatting, or state-persistence tasks. - Persist application-only UI preferences separately from Codex's `config.toml`; do not mix portal preferences into the user's Codex configuration. - Do not start services, build, package, install dependencies, deploy, modify unrelated configuration, or update documentation without explicit user authorization. Requested project skill and rule updates authorize editing those files. An authorized release also covers the required README updates described below. ## No Tests or Browser Calls by Default For this project, complete the requested edits without creating or running tests, executing validation commands, or invoking browser/computer-use tools. This also applies when creating or updating this project skill. A general request to implement, fix, or finish work does not authorize these actions. - Do not run unit, integration, end-to-end, or ad hoc assertion tests; type checks; lint or formatting checks; `git diff --check`; skill validators such as `quick_validate.py`; or builds and previews for verification. - Do not open a browser, call browser automation tools, take screenshots, perform visual or interaction testing, or start a service or create a preview page for those purposes. - Use only the source reads and ordinary Git status/diff inspection needed to understand and edit the requested files. Do not add a testing or validation phase, delegate one, or ask for permission to run one as a routine completion step. - Run a particular check only if the user later explicitly requests it, and stay within that request. An explicitly authorized release may use the release workflow below; it does not authorize extra local tests or browser calls. - Briefly report the edits and state that tests were not run per the project rule. Do not describe omitted tests as a blocker or claim that unrun checks passed. ## Update the Application Ve
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (8)
icon.icns
import { TextMatch } from '../../utils/sessionSearch';import { SessionProject } from '../../types/session';import { formatRelativeTime } from '../../utils/time';import { formatTokens } from '../../utils/format';import type { SessionRecord } from '../../types/session';@radix-ui/react-dialog, @radix-ui/react-slot, @radix-ui/react-tooltip, @tauri-apps/api, @tauri-apps/plugin-autostart, @tauri-apps/plugin-opener, @tauri-apps/plugin-process, @tauri-apps/plugin-updater
Gates applied: no_behavioural_pass, no_license.
ff6703044a24full audit observations/trust-audit/skill/kohlarnhin__codexportal.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-13 | ff6703044a24 | SAFE | B | 89 | first audit |
Questions
What does the CodexPortal skill do?
OpenAI Codex desktop manager for seamless account switching, live quotas, configuration, MCP, skills and sessions. macOS & Windows. No model API reverse proxy.
Is CodexPortal safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can CodexPortal access on my machine?
The audit observed that it reaches the network and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.
Which assistants does CodexPortal work with?
Its documentation mentions codex. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (ff6703044a24), read on 2026-10-13. The repository is watched, and a new audit runs when it changes — this is the first audit.