Skip to content

feat(voice-call): per-agent thinkingDefault override for voice callsΒ #27020

@carl-jeffrolc

Description

@carl-jeffrolc

Problem

The global agents.defaults.thinkingDefault setting applies to all embedded agent runs, including the voice-call plugin's response generation. When set to "high", this causes two critical issues for voice calls:

  1. Excessive latency: Extended thinking adds 10-30+ seconds before the first response token, making voice calls unusable (callers hang up before the model finishes thinking)
  2. Behavioral changes: With thinking=high, the model sometimes calls the tts tool instead of returning plain text, even when the system prompt explicitly says "Never call the tts tool". The voice-call plugin expects plain text to route through ElevenLabs TTS β€” tool calls produce no audio output

Current Behavior

embedded run start: provider=anthropic model=claude-haiku-4-5 thinking=high messageChannel=voice
embedded run tool start: tool=tts  ← model calls tts despite system prompt prohibition
embedded run agent end: isError=false  ← "succeeds" but caller hears nothing

The resolveThinkingDefault() function returns the global default for all runs with no way to override per-agent:

function resolveThinkingDefault(params) {
  const configured = params.cfg.agents?.defaults?.thinkingDefault;
  if (configured) return configured;
  // ...
}

Expected Behavior

Allow per-agent thinkingDefault override in the agent list entries:

{
  agents: {
    defaults: { thinkingDefault: "high" },  // global default for coding agents
    list: [
      {
        id: "voice",
        thinkingDefault: "off",  // voice agent override β€” currently rejected as "Unrecognized key"
        model: { primary: "anthropic/claude-sonnet-4-6" }
      }
    ]
  }
}

Workaround Attempts

  • Setting thinking or thinkingDefault on the agent entry β†’ rejected by strict schema validation ("Unrecognized key")
  • Switching to Haiku 4.5 (no thinking support) β†’ thinking=high still sent, causes model to call tts tool
  • Setting global thinkingDefault: "off" β†’ fixes voice but degrades all other agents
  • Resetting voice session β†’ no effect

Environment

  • OpenClaw v2026.2.24 (stable)
  • macOS, LaunchAgent-managed gateway
  • Voice pipeline: Twilio β†’ OpenAI Realtime STT β†’ LLM β†’ ElevenLabs TTS

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleMarked as stale due to inactivity

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions