Skip to content

feat(web): choose reasoning, speed, and permissions for scheduled tasks - #16592

Open
robertnisipeanu wants to merge 2 commits into
pingdotgg:mainfrom
robertnisipeanu:scheduled-task-traits
Open

robertnisipeanu wants to merge 2 commits into
pingdotgg:mainfrom
robertnisipeanu:scheduled-task-traits

Conversation

@robertnisipeanu

@robertnisipeanu robertnisipeanu commented Oct 6, 2026 •

Copy link
Copy Markdown

Problem

The scheduled-task editor on web only lets you pick a model. Reasoning level, context window, fast mode and permission mode can't be chosen there, even though the chat composer and the mobile task editor already offer them and the server already stores and runs with them.

Change

The Model field in the web editor now has the same traits menu as the composer next to the model picker (reasoning, context window, fast mode, and Ultrathink for Claude models). A new Permissions field picks Supervised, Auto-accept edits, Auto or Full access.

  • The draft keeps a single modelSelection. When it's null, the task follows the project's default model and that model's options. Editing a task keeps its saved options. Picking a different model resets the options to that model's defaults. Picking the model that's already selected changes nothing.
  • The Permissions menu only offers the modes the selected provider supports, using the same rule as the composer. If the stored mode isn't supported by that provider, the dialog shows and saves the provider's first supported mode. Otherwise the server would quietly run the task as Supervised and it would stall waiting for approvals.
  • A task bound to an existing thread runs with that thread's permissions, so the editor hides Permissions for those tasks. The model and traits still apply to them.
  • Web only. The contract, the server and the mobile editor already handle these fields.

Scope and approval

Focused configuration of an established capability. Scheduled tasks already store a full model selection (including provider options) plus a permission mode and launch runs with them; tasks an agent creates copy both from the calling thread, and the mobile editor already exposes them. This PR only adds the matching controls to the web editor, reusing the composer's traits picker and permission options, with no contract or server change.

Verification

  • tsc --noEmit (apps/web), vp lint and vp fmt --check on the changed files: pass. scheduledTasksSettings.logic.test.ts: 22/22 pass.
  • Tested in a browser against a dev server with seeded data:
    • Created a task with Claude Opus 5.5, High + Fast + 1M, and Supervised. The stored row had options: [effort: high, fastMode: true, contextWindow: 1m] and runtime_mode: approval-required.
    • Reopening the task showed the same choices.
    • After binding the task to a thread, the editor hid Permissions and kept the model and traits. New tasks still show Permissions.
    • Choosing Ultrathink added the prefix to the prompt, the same as in the composer.
    • No console errors.

Screenshots

Before: new task dialog

After: new task dialog with traits and permissions

After: traits menu

After: permissions menu

Implemented with Claude Opus 5.5 in Claude Code (T3 Code).

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Oct 6, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This production web change adds persisted model traits and permission selection to scheduled tasks, changing how future agent runs execute. It spans new controls, provider compatibility handling, and existing-task state persistence, so human review is warranted.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c4c9bb9c-3d57-46c0-9269-443a9fb66032
📥 Commits

Reviewing files that changed from the base of the PR and between a67105e and 8ea1baf.

📒 Files selected for processing (1)
  • apps/web/src/components/settings/ScheduledTasksSettings.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

Scheduled-task drafts now store model selections directly. The editor adds model and traits controls, filters runtime-mode choices by provider support, and saves the active selection with the resolved mode. Unthreaded tasks have a permissions selector; thread-bound tasks omit it.

Changes

Scheduled task editor

Layer / File(s) Summary
Draft model selection
apps/web/src/components/settings/scheduledTasksSettings.logic.ts, apps/web/src/components/settings/ScheduledTasksSettings.tsx
DraftState and taskToDraft now use a nullable modelSelection. The editor initializes that field directly and removes the serialized model-key parser.
Model and permissions controls
apps/web/src/components/settings/ScheduledTasksSettings.tsx
The editor adds model and traits pickers. Runtime-mode choices follow the selected provider’s supported modes when available. Unthreaded tasks have a permissions selector, and thread-bound tasks omit it. Saving uses the active selection and resolved mode. Changing environments clears the selection.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~15 minutes

Change: Feature

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to 8ea1b

The scheduled-task editor changes are mergeable after normal checks; no material issue remains established.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 8ea1b

The change exposes existing execution settings without demonstrating a new authorization bypass or increased maximum authority. Existing task identity and thread permissions remain protected. Provider changes during editing and interrupted saves were assessed statically, not verified at runtime.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The security-relevant exposure is automated prompt execution in the selected environment and project, using a selected workspace or an existing thread. An authorized operator can change approval behavior for unthreaded tasks. Workspace selection identifies execution location; it does not establish a host or credential isolation boundary.

Trust Boundaries and Controls

  • observed — Scheduled-task upsert requires orchestration-operate scope. The connection's RPC authorization layer checks the authenticated session's scopes before allowing handlers to execute; the editor continues using this existing mutation boundary.
  • observed — Client compatibility filtering is separate from server runtime policy. The registry-backed policy substitutes approval-required for a requested mode excluded by a nonempty provider support list. Missing or empty lists retain the requested mode, so this fallback is conditional rather than a universal fail-closed guarantee.

Resilience and Maintainability Implications

  • observed — The existing persistence statement writes model selection and runtime mode together, checks task existence within the write for edits, and excludes run-history columns from conflict updates. It also preserves a concurrently rotated webhook token and an unchanged signing secret, limiting settings-save control drift.
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main change: adding model traits and permission choices to the scheduled-task editor.
Description check ✅ Passed The description covers the problem, change, scope and approval rationale, verification results, and UI screenshots. It provides enough detail to assess the change against the repository template.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

A task bound to an existing thread runs with that thread's permissions,
so the editor does not offer a choice that would not apply.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant