fix(cyberstrike): update ChatGPT Codex OpenAI defaults - #61
Merged
badchars merged 5 commits intoAug 6, 2026
Merged
Conversation
…eus#54) * ignore: update download stats 2026-06-24 * ignore: update download stats 2026-06-25 * ignore: update download stats 2026-06-26 * ignore: update download stats 2026-06-27 * ignore: update download stats 2026-06-28 * ignore: update download stats 2026-06-29 * ignore: update download stats 2026-06-30 * ignore: update download stats 2026-07-01 * ignore: update download stats 2026-07-02 * ignore: update download stats 2026-07-03 * ignore: update download stats 2026-07-04 * ignore: update download stats 2026-07-05 * ignore: update download stats 2026-07-06 * ignore: update download stats 2026-07-07 * ignore: update download stats 2026-07-08 * fix(copilot): use GitHub's first-party Copilot CLI OAuth app for device flow Replace upstream OpenCode's third-party OAuth app (Ov23) with GitHub's official Copilot CLI OAuth app (Iv1.b507a08c87ecfe98). This ensures enterprise customers see "Authorize GitHub Copilot CLI by GitHub" instead of "Authorize OpenCode by Anomaly", and enables copilot_internal/v2/token access for live model catalog discovery. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add unreleased section with MCP servers and Copilot OAuth fix Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(hackbrowser): enable GitHub Copilot OAuth for crawler subprocess Copilot's OAuth auth uses a closure-based custom fetch in the main process that can't cross the IPC boundary to the hackbrowser worker. This follows the same pattern as the existing Anthropic OAuth path: extract the bearer token, pass it via ModelDescriptor, and reconstruct the authenticated fetch in the worker with Copilot-specific headers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add hackbrowser Copilot OAuth support to unreleased Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: generate * feat(mcp): disable all built-in MCP servers by default All 11 built-in MCP servers are now installed but disabled by default to avoid unnecessary token overhead. The system prompt lists disabled servers so the agent can remind users to enable them when relevant. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add MCP disabled-by-default to unreleased Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(hackbrowser): auto-install Chromium on first use When hackbrowser detects Chromium is missing, it now attempts automatic installation via playwright CLI before spawning the worker. Falls back to the existing manual error message if auto-install fails (e.g. SSL issues in corporate environments). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add Chromium auto-install to unreleased Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(postinstall): bypass SSL verification for corporate proxy environments Adds NODE_TLS_REJECT_UNAUTHORIZED=0 to the playwright npm install subprocess in postinstall, preventing UNABLE_TO_GET_ISSUER_CERT_LOCALLY errors from corporate MITM proxies. Only affects this subprocess. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(postinstall): auto-add npm global bin to Windows user PATH Corporate Windows installs often lack npm's global bin in PATH, making the cyberstrike command unreachable. Postinstall now detects this and appends to user-level PATH via PowerShell (no admin required). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add install.sh playwright auto-install Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(normalize): value-strip JSON bodies by shape-sniff, not content-type bodyKeyShapeHash only took the JSON path when the content-type contained "json", so JSON bodies sent under other content-types (application/csp-report, +json variants, mislabeled JSON) fell through to the raw bodyHash and every volatile-value payload fragmented into its own endpoint — CSP violation reports seen ×55 on one host. Take the JSON branch when the content-type says json OR the trimmed body starts with { or [, and on parse failure fall through to the form/multipart handlers instead of returning. Verified: two different csp-report bodies collapse to one key, an extra field stays distinct, JSON/form/multipart unchanged; 73 normalize tests pass; live ingest of 3 distinct csp-reports yields 1 request row. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(normalize): one parseBody dispatch — observe form/multipart values + parse SOAP/XML bodyKeyShapeHash (endpoint key) and bodySlots (observed values) each re-decided how to read a body and had drifted: keying learned form/multipart, value extraction stayed JSON-only, so form-app values (an ASP.NET HiddenUserID → IDOR substrate) and CSP/XML bodies were never observed. Introduce a single parseBody(body, contentType) that both project from — key from the field names, slots from name+value. This closes the form/multipart/CSP observation gap and adds SOAP/XML: value-invariant dedup (Add(5,3) and Add(99,7) collapse to one endpoint), operation-distinction (free — the SOAP operation is the element under <Body>, already in the path), and observed element/attribute values, by parsing XML to an object and reusing the SAME keyPaths/jsonLeaves walks (fast-xml-parser isolated behind xml.ts, XML triggered by content-type only — no `<`-sniff that would swallow HTML/`<?php` payloads). keyHash for every non-XML body is byte-identical (golden characterization over 290 real + synthetic bodies); 99 normalize tests pass; validated live in the ingest pipeline (JSON/form/SOAP dedup + observation). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(agent): raise proxy-tester soft step cap 15 → 50 More headroom for multi-step verification + reporting on complex endpoints. Still a soft cap (forces a text wrap-up at the limit) and only applies when not explicitly configured; affordable with prompt caching (extra turns re-read the cached prefix). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(hackbrowser): advance crawling — occlusion recovery, robust selectors, file upload, stateful-flow coverage Crawl-uplevel work, validated end-to-end (no regressions). Distinct improvements: - Occlusion: structural probeClickPoint (elementFromPoint hit-test, shadow/iframe safe-default) + safe recovery (Escape/backdrop + wait + real retry) + principle-based LLM-dismiss rule. Crash-safe on non-CSS Playwright selectors (role=/text=) so a probe never kills the crawl. - Selectors: element-unique CSS (querySelectorAll uniqueness verify + positional-path fallback) fixes sibling-cluster loss; force CSS selector for <input type=file> (a role=textbox selector resolves to 0 nodes → setInputFiles timeout); action-priority element cap keeps footer submit buttons on large forms/modals. - File upload: form-embedded (executeFileSelect) + click-triggered (filechooser) file selection with bundled, accept-matched sample files (mechanical, no LLM). - Redirect-collapse dedup: single-cred skips N-routes→1-gate collapses by landed URL; multi-cred enqueues the landed URL instead of mislabeling gate content under each route (fixes false "both creds can access X" access-control data). - Inline depth-first exploration: pages reached via a state-changing action (e.g. an ASP.NET postback) are explored in place while their server-side state is alive, via a DIP-injected ExploreContext + shared handleNavigation — reaching/submitting forms that a later queued GET could never load (session-timeout). - Planner: occlusion-dismiss (least-committal) + fill-modal (fill+submit, don't X-close) rules. Validated: 96/96 unit + 128/130 coverage, built-in livecrawl smoke, live Juice Shop (single + multi-credential), and a synthetic repro per fix. Zero regressions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: generate * chore: update nix node_modules hashes * chore: test commit attribution * ignore: update download stats 2026-07-09 * ignore: update download stats 2026-07-10 * ignore: update download stats 2026-07-11 * ignore: update download stats 2026-07-12 * ignore: update download stats 2026-07-13 * ignore: update download stats 2026-07-14 * ignore: update download stats 2026-07-15 * ignore: update download stats 2026-07-16 * ignore: update download stats 2026-07-17 * ignore: update download stats 2026-07-18 * ignore: update download stats 2026-07-19 * ignore: update download stats 2026-07-20 * ignore: update download stats 2026-07-21 * fix(codex): allow GPT-5.6 models through the OAuth model filter The OAuth loader dropped every model whose id neither contains "codex" nor appears in allowedModels. The ChatGPT backend serves gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.4 and gpt-5.4-mini, none of which match either rule, so they disappeared from the model list after signing in with a ChatGPT account. They are already present in the models.dev catalog, so listing the slugs is enough. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(codex): drop unsupported service_tier for the Codex backend ProviderTransform.options() sets serviceTier "auto" for every OpenAI model, but that value only exists on the platform API. Requests routed to chatgpt.com/backend-api/codex fail with: Bad Request: Unsupported service_tier: auto options() only receives the model, so it cannot tell an OAuth request apart from a platform one. Strip the value in the Codex fetch wrapper instead, where the URL and auth headers are already rewritten. Only "auto" is removed. The backend does serve its own tier -- the Fast speed tier sends service_tier "priority" -- so that value is preserved. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Orhan Yildirim <orhan_yil@msn.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: cyberstrike-bot[bot] <cyberstrike-bot[bot]@users.noreply.github.com> Co-authored-by: Serhatcck <serhatdbs@outlook.com>
Contributor
|
Hey! Your PR title Please update it to start with one of:
Where See CONTRIBUTING.md for details. |
Contributor
|
Thanks for the contribution @bigzooooz! The Codex service_tier fix and updated model list look solid. Merging now. |
badchars
added a commit
that referenced
this pull request
Aug 6, 2026
* fix(prompt): correct skill count from 120+ to 7,600+ * fix(codex): make GPT-5.6 models usable over ChatGPT OAuth (#54) * ignore: update download stats 2026-06-24 * ignore: update download stats 2026-06-25 * ignore: update download stats 2026-06-26 * ignore: update download stats 2026-06-27 * ignore: update download stats 2026-06-28 * ignore: update download stats 2026-06-29 * ignore: update download stats 2026-06-30 * ignore: update download stats 2026-07-01 * ignore: update download stats 2026-07-02 * ignore: update download stats 2026-07-03 * ignore: update download stats 2026-07-04 * ignore: update download stats 2026-07-05 * ignore: update download stats 2026-07-06 * ignore: update download stats 2026-07-07 * ignore: update download stats 2026-07-08 * fix(copilot): use GitHub's first-party Copilot CLI OAuth app for device flow Replace upstream OpenCode's third-party OAuth app (Ov23) with GitHub's official Copilot CLI OAuth app (Iv1.b507a08c87ecfe98). This ensures enterprise customers see "Authorize GitHub Copilot CLI by GitHub" instead of "Authorize OpenCode by Anomaly", and enables copilot_internal/v2/token access for live model catalog discovery. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add unreleased section with MCP servers and Copilot OAuth fix Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(hackbrowser): enable GitHub Copilot OAuth for crawler subprocess Copilot's OAuth auth uses a closure-based custom fetch in the main process that can't cross the IPC boundary to the hackbrowser worker. This follows the same pattern as the existing Anthropic OAuth path: extract the bearer token, pass it via ModelDescriptor, and reconstruct the authenticated fetch in the worker with Copilot-specific headers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add hackbrowser Copilot OAuth support to unreleased Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: generate * feat(mcp): disable all built-in MCP servers by default All 11 built-in MCP servers are now installed but disabled by default to avoid unnecessary token overhead. The system prompt lists disabled servers so the agent can remind users to enable them when relevant. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add MCP disabled-by-default to unreleased Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(hackbrowser): auto-install Chromium on first use When hackbrowser detects Chromium is missing, it now attempts automatic installation via playwright CLI before spawning the worker. Falls back to the existing manual error message if auto-install fails (e.g. SSL issues in corporate environments). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add Chromium auto-install to unreleased Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(postinstall): bypass SSL verification for corporate proxy environments Adds NODE_TLS_REJECT_UNAUTHORIZED=0 to the playwright npm install subprocess in postinstall, preventing UNABLE_TO_GET_ISSUER_CERT_LOCALLY errors from corporate MITM proxies. Only affects this subprocess. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(postinstall): auto-add npm global bin to Windows user PATH Corporate Windows installs often lack npm's global bin in PATH, making the cyberstrike command unreachable. Postinstall now detects this and appends to user-level PATH via PowerShell (no admin required). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(changelog): add install.sh playwright auto-install Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(normalize): value-strip JSON bodies by shape-sniff, not content-type bodyKeyShapeHash only took the JSON path when the content-type contained "json", so JSON bodies sent under other content-types (application/csp-report, +json variants, mislabeled JSON) fell through to the raw bodyHash and every volatile-value payload fragmented into its own endpoint — CSP violation reports seen ×55 on one host. Take the JSON branch when the content-type says json OR the trimmed body starts with { or [, and on parse failure fall through to the form/multipart handlers instead of returning. Verified: two different csp-report bodies collapse to one key, an extra field stays distinct, JSON/form/multipart unchanged; 73 normalize tests pass; live ingest of 3 distinct csp-reports yields 1 request row. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(normalize): one parseBody dispatch — observe form/multipart values + parse SOAP/XML bodyKeyShapeHash (endpoint key) and bodySlots (observed values) each re-decided how to read a body and had drifted: keying learned form/multipart, value extraction stayed JSON-only, so form-app values (an ASP.NET HiddenUserID → IDOR substrate) and CSP/XML bodies were never observed. Introduce a single parseBody(body, contentType) that both project from — key from the field names, slots from name+value. This closes the form/multipart/CSP observation gap and adds SOAP/XML: value-invariant dedup (Add(5,3) and Add(99,7) collapse to one endpoint), operation-distinction (free — the SOAP operation is the element under <Body>, already in the path), and observed element/attribute values, by parsing XML to an object and reusing the SAME keyPaths/jsonLeaves walks (fast-xml-parser isolated behind xml.ts, XML triggered by content-type only — no `<`-sniff that would swallow HTML/`<?php` payloads). keyHash for every non-XML body is byte-identical (golden characterization over 290 real + synthetic bodies); 99 normalize tests pass; validated live in the ingest pipeline (JSON/form/SOAP dedup + observation). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(agent): raise proxy-tester soft step cap 15 → 50 More headroom for multi-step verification + reporting on complex endpoints. Still a soft cap (forces a text wrap-up at the limit) and only applies when not explicitly configured; affordable with prompt caching (extra turns re-read the cached prefix). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(hackbrowser): advance crawling — occlusion recovery, robust selectors, file upload, stateful-flow coverage Crawl-uplevel work, validated end-to-end (no regressions). Distinct improvements: - Occlusion: structural probeClickPoint (elementFromPoint hit-test, shadow/iframe safe-default) + safe recovery (Escape/backdrop + wait + real retry) + principle-based LLM-dismiss rule. Crash-safe on non-CSS Playwright selectors (role=/text=) so a probe never kills the crawl. - Selectors: element-unique CSS (querySelectorAll uniqueness verify + positional-path fallback) fixes sibling-cluster loss; force CSS selector for <input type=file> (a role=textbox selector resolves to 0 nodes → setInputFiles timeout); action-priority element cap keeps footer submit buttons on large forms/modals. - File upload: form-embedded (executeFileSelect) + click-triggered (filechooser) file selection with bundled, accept-matched sample files (mechanical, no LLM). - Redirect-collapse dedup: single-cred skips N-routes→1-gate collapses by landed URL; multi-cred enqueues the landed URL instead of mislabeling gate content under each route (fixes false "both creds can access X" access-control data). - Inline depth-first exploration: pages reached via a state-changing action (e.g. an ASP.NET postback) are explored in place while their server-side state is alive, via a DIP-injected ExploreContext + shared handleNavigation — reaching/submitting forms that a later queued GET could never load (session-timeout). - Planner: occlusion-dismiss (least-committal) + fill-modal (fill+submit, don't X-close) rules. Validated: 96/96 unit + 128/130 coverage, built-in livecrawl smoke, live Juice Shop (single + multi-credential), and a synthetic repro per fix. Zero regressions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: generate * chore: update nix node_modules hashes * chore: test commit attribution * ignore: update download stats 2026-07-09 * ignore: update download stats 2026-07-10 * ignore: update download stats 2026-07-11 * ignore: update download stats 2026-07-12 * ignore: update download stats 2026-07-13 * ignore: update download stats 2026-07-14 * ignore: update download stats 2026-07-15 * ignore: update download stats 2026-07-16 * ignore: update download stats 2026-07-17 * ignore: update download stats 2026-07-18 * ignore: update download stats 2026-07-19 * ignore: update download stats 2026-07-20 * ignore: update download stats 2026-07-21 * fix(codex): allow GPT-5.6 models through the OAuth model filter The OAuth loader dropped every model whose id neither contains "codex" nor appears in allowedModels. The ChatGPT backend serves gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.4 and gpt-5.4-mini, none of which match either rule, so they disappeared from the model list after signing in with a ChatGPT account. They are already present in the models.dev catalog, so listing the slugs is enough. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(codex): drop unsupported service_tier for the Codex backend ProviderTransform.options() sets serviceTier "auto" for every OpenAI model, but that value only exists on the platform API. Requests routed to chatgpt.com/backend-api/codex fail with: Bad Request: Unsupported service_tier: auto options() only receives the model, so it cannot tell an OAuth request apart from a platform one. Strip the value in the Codex fetch wrapper instead, where the URL and auth headers are already rewritten. Only "auto" is removed. The backend does serve its own tier -- the Fast speed tier sends service_tier "priority" -- so that value is preserved. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Orhan Yildirim <orhan_yil@msn.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: cyberstrike-bot[bot] <cyberstrike-bot[bot]@users.noreply.github.com> Co-authored-by: Serhatcck <serhatdbs@outlook.com> * fix(codex): use version-based regex filter for future model compatibility * fix: update ChatGPT Codex OpenAI defaults --------- Co-authored-by: badchars <badchars@users.noreply.github.com> Co-authored-by: gutslabs <128259593+Gutslabs@users.noreply.github.com> Co-authored-by: Orhan Yildirim <orhan_yil@msn.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: cyberstrike-bot[bot] <cyberstrike-bot[bot]@users.noreply.github.com> Co-authored-by: Serhatcck <serhatdbs@outlook.com> Co-authored-by: test <test@example.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #56
Summary
serviceTiertoautoby default.Verification
cyberstrike models openaino longer listsgpt-5.2orgpt-5.3-codex.bun test test/plugin/codex.test.ts test/provider/transform.test.ts --timeout 30000@ai-sdk/xai > grok-3 returns empty object.