Skip to content

browser: --browser-thinking-time extra-high selects Pro instead of Extra High (GPT-5.6 Sol) #353

Description

@ozeron

Summary

On ChatGPT browser mode with GPT-5.6 Sol, --browser-thinking-time extra-high ends up selecting the UI effort labeled Pro, not Extra High. CLI override cannot currently request Extra High without hitting Pro.

Observed with @steipete/oracle@0.17.0.

Expected

CLI flag ChatGPT UI effort
high / extended High
extra-high Extra High (non-Pro)
heavy Pro (explicit only)

Docs / skill guidance treat extra-high as the non-Pro max effort and heavy as Pro. Users should be able to override Extra High from the CLI.

Actual

  1. normalizeThinkingTimeLevel("extra-high") returns "heavy".
  2. For GPT-5.6, thinking-time selection prefers a menu item whose label contains pro when TARGET_LEVEL === "heavy".
  3. Session meta stores thinkingTime: "heavy"; logs show Thinking time: Pro (already selected).

Contrast: --browser-thinking-time extended correctly logs Thinking time: High and stores thinkingTime: "extended".

Repro

npx -y @steipete/oracle@0.17.0 --engine browser --model gpt-5.6-sol \
  --browser-thinking-time extra-high \
  --copy-profile "$HOME/Library/Application Support/Google/Chrome" \
  --slug "repro-extra-high-vs-pro" --timeout 10m \
  -p "Reply with exactly: ok" \
  --file README.md

Then check:

# expecting Extra High; getting Pro / heavy
jq '.browser.config.thinkingTime' ~/.oracle/sessions/repro-extra-high-vs-pro/meta.json
# → "heavy"

Control (works as High):

npx -y @steipete/oracle@0.17.0 --engine browser --model gpt-5.6-sol \
  --browser-thinking-time extended \
  ...
# log: Thinking time: High
# meta: thinkingTime = "extended"

Code pointers (0.17.0)

Alias collapsesrc/oracle/thinkingTime.js (dist: dist/src/oracle/thinkingTime.js):

case "heavy":
case "extra-high":
case "extrahigh":
case "xhigh":
  return "heavy";

GPT-5.6 Pro preference when heavysrc/browser/actions/thinkingTime.js injected selector:

  • LEVEL_TOKENS.heavy includes 'extra high'
  • For TARGET_IS_GPT56_MODEL && TARGET_LEVEL === 'heavy', option finder returns items with hasToken(itemText, 'pro')
  • currentEffortPillMatchesTarget treats a Pro pill as a successful heavy match for GPT-5.6

Inconsistency: model selection already treats Extra High as non-Pro (isNonProIntelligenceThinkingLabel includes 'extra high' and scores it highest), but thinking-time selection conflates Extra High with Pro via heavy.

Suggested fix

  1. Keep extra-high as its own normalized level (do not map to heavy).
  2. Split tokens:
    • extra-high → match extra high / 极高 only (no pro)
    • heavy → match Pro / heavy only
  3. Gate the GPT-5.6 “prefer Pro” branch so it runs only for TARGET_LEVEL === "heavy", never for extra-high.
  4. Same for verification / “already selected” Pro shortcuts.
  5. Update help text so aliases are unambiguous: extra-high = Extra High UI; heavy = Pro UI.

After that, CLI override remains --browser-thinking-time extra-high with no new flag required.

Environment

  • @steipete/oracle: 0.17.0
  • Engine: browser (Chrome copy-profile)
  • Model: gpt-5.6-sol / GPT-5.6 Sol
  • Host: macOS

Happy to test a PR build if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal priority bug or improvement with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions