Skip to content

config.json support for defaultEffort and agentEffortOverrides #773

Closed

Description

@dnoriegagoodwin

Problem

The copilot --effort flag exists at session level, but it's unclear whether it propagates to task tool sub-agent spawns (#729 shows the platform injects low regardless). It's unclear if there is a way to figure effort per-agent or set a persistent default through Squad's config.

(It's also not clear to me if this is a limitation of Copilot CLI and how it spawns sub-agents.)

Proposal

Extend .squad/config.json with effort overrides, following the same pattern as defaultModel / agentModelOverrides:

{
  "version": 1,
  "defaultEffort": "xhigh",
  "agentEffortOverrides": {
    "scribe": "medium",
    "ralph": "medium"
  }
}
  • defaultEffort — applies to all agents unless overridden. Persistent across sessions.
  • agentEffortOverrides — per-agent effort level. Useful for downgrading mechanical agents (Scribe, Ralph) while keeping code-writing agents at xhigh.
  • Valid values: "low", "medium", "high", "xhigh" (matching copilot --effort choices)

The coordinator would resolve effort using the same layered approach as model selection:

  1. agentEffortOverrides.{name} (per-agent persistent)
  2. defaultEffort (global persistent)
  3. Session directive ("use xhigh effort")
  4. Charter preference (Effort: xhigh in ## Model section)
  5. Platform default

Why this matters

Different agents need different effort levels. Code-writing agents (implementations, refactors, statistical modeling) benefit from xhigh. Mechanical agents (Scribe logging, changelog generation) waste tokens at xhigh and work fine at medium. The current all-or-nothing approach forces users to choose between quality and cost.

Related

  • task tool sets reasoning_effort: low which is incompatible with gpt-5.2-codex #729 — task tool sets reasoning_effort: low, causing a 400 error for gpt-5.2-codex (only supports medium)
  • Copilot CLI supports --effort at session level (copilot --effort xhigh), but propagation to sub-agent spawns is unverified
  • Squad SDK already has reasoningEffort on SquadSessionConfig and per-model supportedReasoningEfforts — the plumbing exists at the SDK layer

Activity

  1. added
    enhancementNew feature or improvement
    squadSquad triage inbox — Lead will assign to a member
    on Apr 8, 2026
  2. github-actions commented on Apr 8, 2026

    @github-actions
    Contributor

    🏗️ Squad Triage — Flight (Lead)

    Issue: #773 — config.json support for defaultEffort and agentEffortOverrides
    Assigned to: Flight (Lead)
    Reason: No specific domain match — assigned to Lead for further analysis

    @copilot evaluation: 🔴 Not suitable — issue involves work outside the coding agent's capability profile.

    Team roster:

    • Flight (Lead) → label: squad:flight
    • Procedures (Prompt Engineer) → label: squad:procedures
    • EECOM (Core Dev) → label: squad:eecom
    • FIDO (Quality Owner) → label: squad:fido
    • PAO (DevRel) → label: squad:pao
    • CAPCOM (SDK Expert) → label: squad:capcom
    • CONTROL (TypeScript Engineer) → label: squad:control
    • Surgeon (Release Manager) → label: squad:surgeon
    • Booster (CI/CD Engineer) → label: squad:booster
    • GNC (Node.js Runtime) → label: squad:gnc
    • Network (Distribution) → label: squad:network
    • RETRO (Security) → label: squad:retro
    • INCO (CLI UX & Visual Design) → label: squad:inco
    • GUIDO (VS Code Extension) → label: squad:guido
    • Telemetry (Aspire & Observability) → label: squad:telemetry
    • VOX (REPL & Interactive Shell) → label: squad:vox
    • DSKY (TUI Engineer) → label: squad:dsky
    • Sims (E2E Test Engineer) → label: squad:sims
    • Handbook (SDK Usability) → label: squad:handbook
    • Ralph (Work Monitor) → label: squad:ralph
    • @copilot (Coding Agent) → label: squad:copilot

    To reassign, remove the current squad:* label and add the correct one.

  3. bradygaster commented on May 18, 2026

    @bradygaster
    Collaborator

    Closing — depends on #729 which is a platform limitation. Squad has no mechanism to pass reasoning_effort through the task tool. Will reopen if/when the platform exposes this parameter.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or improvementgo:needs-researchNeeds investigationsquadSquad triage inbox — Lead will assign to a member

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions