Skip to content

Commit 9e4d034

Browse files
committed
Merge dev: silent loopback dashboard session renewal, effort restoration hardening, Windows scheduler fixes
Promotes dev to main for the v2.7.43 quick-fix release: - fix(gui): renew loopback dashboard sessions silently instead of prompting - PR #705 + follow-up: Claude effort restoration boundary hardening - PRs #694/#698/#699 and Windows scheduler compare/denial fixes
2 parents bc811e7 + d4b3c81 commit 9e4d034

36 files changed

Lines changed: 1055 additions & 75 deletions

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
blank_issues_enabled: false
22
contact_links:
3+
- name: Report a security vulnerability (private)
4+
url: https://github.com/lidge-jun/opencodex/security/advisories/new
5+
about: Report undisclosed vulnerabilities privately to the maintainers. Do not open a public issue.
36
- name: Security policy
47
url: https://github.com/lidge-jun/opencodex/blob/main/SECURITY.md
58
about: Read the supported-version and reporting guidance before sharing security-sensitive details.

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,9 @@ The public docs — install, providers, routing, sidecars, Codex integration, Co
509509
Maintainer source-of-truth notes live under [`structure/`](./structure). Historical investigations remain under [`docs/`](./docs).
510510
Contributor setup lives in [`CONTRIBUTING.md`](./CONTRIBUTING.md), and security reporting guidance
511511
lives in [`SECURITY.md`](./SECURITY.md).
512+
Report undisclosed vulnerabilities privately through
513+
[GitHub private vulnerability reporting](https://github.com/lidge-jun/opencodex/security/advisories/new),
514+
not a public issue.
512515

513516
## Development
514517

SECURITY.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,19 @@ or the latest published package before triage continues.
1717

1818
Please avoid posting undisclosed vulnerabilities as public GitHub issues.
1919

20-
- Prefer this repository's GitHub private vulnerability reporting or GitHub Security Advisory flow
21-
when that option is available in the repository UI.
22-
- If no private reporting option is available, do not include exploit details, secrets, or live
23-
targets in a public issue. Open a minimal issue that asks maintainers for a safe coordination path.
24-
- Include affected versions, reproduction steps, impact, and any required configuration details.
20+
Report privately through GitHub private vulnerability reporting, which is enabled on this
21+
repository:
2522

26-
The project does not publish a dedicated private security email in this repository.
23+
**<https://github.com/lidge-jun/opencodex/security/advisories/new>**
24+
25+
The same form is reachable from the repository's **Security** tab under **Report a vulnerability**.
26+
It is private between you and the maintainers, and it is the only channel this project offers for
27+
undisclosed vulnerabilities — there is no dedicated private security email.
28+
29+
Include affected versions, reproduction steps, impact, and any required configuration details.
30+
31+
If the form is ever unreachable for you, open a minimal public issue that asks maintainers for a
32+
safe coordination path. Do not include exploit details, secrets, or live targets in that issue.
2733

2834
## Response Expectations
2935

docs-site/src/content/docs/guides/web-dashboard.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ ocx start
2121
bun run dev:gui
2222
```
2323

24+
## Sign-in
25+
26+
On the default loopback bind (`localhost` / `127.0.0.1`) the dashboard never asks for a token:
27+
the proxy mints short-lived GUI sessions into the served page and renews them silently when
28+
they expire or the proxy restarts. Only a dashboard bound to a non-loopback hostname requires
29+
the admin token (`OPENCODEX_ADMIN_AUTH_TOKEN`, or the auto-generated
30+
`~/.opencodex/admin-api-token` file).
31+
2432
## What you can do
2533

2634
| Area | What it does |

docs-site/src/content/docs/ja/reference/cli.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,15 @@ ocx service status
360360
ocx service uninstall
361361
```
362362

363+
Windows でタスク スケジューラのエントリを作成するには昇格が必要です。認識できるローカライズ
364+
済みのアクセス拒否テキストは、既存の案内経路をそのまま使用します。そのテキストが読めない場合、
365+
コマンド形状が `/create /tn opencodex-proxy /xml <空でないパス> /f` と正確に一致し、終了 status
366+
が 1 で、現在のトークンが未昇格と確認できたときだけ、言語に依存しないフォールバックが働きます。
367+
その場合、ダッシュボードの Startup Safety アクションが UAC を自動的に要求できます。フォール
368+
バックでトークン状態を確認できない場合は、元のスケジューラエラーを保持します。他のタスクや操作
369+
は自動昇格 marker を生成できません。ダッシュボードの UAC を承認するか、管理者 PowerShell で
370+
`ocx service install` を再実行してください。
371+
363372
### `ocx codex-shim <subcommand>`
364373

365374
PATH 上のスクリプトベース `codex` ランチャーを軽量な自動起動スクリプトで包みます。実際の `codex.exe`

docs-site/src/content/docs/ko/reference/cli.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,14 @@ ocx service status
379379
ocx service uninstall
380380
```
381381

382+
Windows에서 작업 스케줄러 항목을 만들려면 권한 상승이 필요합니다. 인식 가능한 현지화 권한 거부
383+
문자열은 기존 안내 경로를 그대로 사용합니다. 문자열을 읽을 수 없을 때는 명령 모양이
384+
`/create /tn opencodex-proxy /xml <비어 있지 않은 경로> /f`와 정확히 일치하고, 종료 상태가 1이며,
385+
현재 토큰이 권한 상승되지 않았음이 확인돼야만 언어 독립 fallback이 작동합니다. 이때 대시보드의
386+
Startup Safety 작업이 UAC를 자동 요청할 수 있습니다. fallback에서 토큰 상태를 확인할 수 없으면 원래
387+
스케줄러 오류를 유지합니다. 다른 작업과 동작은 자동 권한 상승 marker를 만들 수 없습니다. 대시보드의
388+
UAC를 승인하거나 관리자 PowerShell에서 `ocx service install`을 다시 실행하세요.
389+
382390
### `ocx codex-shim <subcommand>`
383391

384392
PATH에 있는 스크립트 기반 `codex` 런처를 가벼운 자동 시작 스크립트로 감쌉니다. 실제 `codex.exe`

docs-site/src/content/docs/reference/cli.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,14 @@ ocx service status
439439
ocx service uninstall
440440
```
441441

442+
On Windows, creating the Task Scheduler entry requires elevation. Recognized localized
443+
access-denied text keeps the existing guidance path. If that text is unreadable, the fallback
444+
requires the owned command shape `/create /tn opencodex-proxy /xml <non-empty-path> /f`, status 1,
445+
and a confirmed non-elevated token; the dashboard's Startup Safety action can then request UAC
446+
automatically. If that fallback cannot determine the token state, it retains the original scheduler
447+
error. Foreign tasks and operations can never emit the automatic-elevation marker. Approve the
448+
dashboard UAC prompt or rerun `ocx service install` in an elevated PowerShell window.
449+
442450
### `ocx codex-shim <subcommand>`
443451

444452
Wrap a script-based `codex` launcher on PATH with a lightweight autostart script. Real `codex.exe`

docs-site/src/content/docs/reference/configuration.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ body-occupancy guard):
206206
| `claudeCode.bodyMaxBytes?` | `number` | `67108864` | Native passthrough cumulative body byte cap (streamed SSE and buffered non-stream). Exactly `0` disables. |
207207
| `claudeCode.authMode?` | `"proxy" \| "subscription"` | unset (auto) | How `ANTHROPIC_AUTH_TOKEN` is handled at launch. Unset means auto: opencodex detects Claude auth on every launch and picks subscription when it finds any, proxy when it finds none, and subscription with a warning when it cannot tell. An explicit value is never overridden by detection. See [Claude Code](/guides/claude-code/#auth-mode). |
208208
| `claudeCode.authModeMigratedAt?` | `string` | unset | Internal one-time marker. Written once when an upgrade pins a pre-`auto` config to `subscription`, so a deliberate subscriber is not silently moved onto the proxy. Do not set by hand. |
209+
| `claudeCode.subagentEffort?` | `"low" \| "medium" \| "high" \| "xhigh" \| "max"` | unset (inherit) | Effort written to every generated `~/.claude/agents/ocx-*.md` definition. Unset lets each subagent inherit the parent Claude Code session effort. This controls Claude Code custom-agent frontmatter; it is separate from Codex `injectionEffort` guidance and proxy-side effort caps. Regenerate the definitions by starting through `ocx claude` after changing it. |
209210

210211
### Managed record shapes
211212

docs-site/src/content/docs/ru/reference/cli.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,15 @@ ocx service status
401401
ocx service uninstall
402402
```
403403

404+
В Windows для создания задания Планировщика требуется повышение прав. Распознанный локализованный
405+
текст об отказе в доступе продолжает использовать прежний путь подсказки. Если текст нечитаем,
406+
независимый от языка fallback требует точную форму команды
407+
`/create /tn opencodex-proxy /xml <непустой-путь> /f`, статус 1 и подтверждённый неповышенный токен;
408+
тогда Startup Safety может автоматически запросить UAC. Если fallback не может определить состояние
409+
токена, сохраняется исходная ошибка Планировщика. Другие задания и операции не могут создать marker
410+
автоматического повышения. Подтвердите UAC в панели или повторите `ocx service install` в PowerShell
411+
от имени администратора.
412+
404413
### `ocx codex-shim <subcommand>`
405414

406415
Оборачивает скриптовый лаунчер `codex` в PATH лёгким скриптом автозапуска. Настоящие цели

docs-site/src/content/docs/ru/reference/configuration.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ body-occupancy):
120120
| --- | --- | --- | --- |
121121
| `claudeCode.bodyStallSec?` | `number` | `90` | Бюджет неактивности тела нативного passthrough в секундах — тишина по сырым байтам от вышестоящей стороны, пока ожидается чтение, а не общая длительность. Минимум 1. Ровно `0` отключает. |
122122
| `claudeCode.bodyMaxBytes?` | `number` | `67108864` | Ограничение суммарного размера тела нативного passthrough в байтах (потоковый SSE и буферизованный непотоковый ответ). Ровно `0` отключает. |
123+
| `claudeCode.subagentEffort?` | `"low" \| "medium" \| "high" \| "xhigh" \| "max"` | не задано (наследуется) | Уровень effort, записываемый во все сгенерированные определения `~/.claude/agents/ocx-*.md`. Если значение не задано, subagent наследует effort родительской сессии Claude Code. Это поле управляет frontmatter пользовательского агента Claude Code и не связано с Codex `injectionEffort` или ограничениями effort на стороне proxy. После изменения запустите через `ocx claude`, чтобы пересоздать определения. |
123124

124125
### Управляемые формы записей
125126

0 commit comments

Comments
 (0)