Skip to content

feat: effort control for Claude Code and model version numbers in footer #80

@nathanschram

Description

Summary

Two related enhancements to the reasoning/footer system:

1. Effort control for Claude Code

Claude Code now supports an --effort <level> CLI flag (low/medium/high) that controls reasoning depth. This adds support via Untether's existing reasoning config system:

  • Add "claude" to REASONING_SUPPORTED_ENGINES with engine-specific levels (low/medium/high)
  • Claude runner passes --effort <level> to the CLI subprocess
  • Effort level injected into StartedEvent meta and shown in footer
  • /config reasoning page now appears for Claude with 3 level buttons (vs 5 for Codex)
  • Codex runner also injects reasoning into meta for consistency

2. Model version numbers in footer

_short_model_name() now extracts version numbers from Claude model IDs:

  • claude-opus-4-6opus 4.6
  • claude-sonnet-4-5-20250929sonnet 4.5
  • claude-haiku-4-5-20251001haiku 4.5
  • Bare names (opus) and non-Claude models (gemini-2.5-pro) unchanged

Footer example: opus 4.6 · medium · plan

Files changed

  • src/untether/telegram/engine_overrides.py — per-engine reasoning levels
  • src/untether/runners/claude.py--effort flag, effort in meta
  • src/untether/runners/codex.py — effort in meta (consistency)
  • src/untether/markdown.py — version extraction, effort in meta line
  • src/untether/telegram/commands/config.py — reasoning button for Claude, dynamic level buttons
  • tests/test_meta_line.py — updated assertions, effort tests
  • tests/test_config_command.py — Claude reasoning tests
  • docs/reference/runners/claude/runner.md--effort flag
  • docs/how-to/model-reasoning.md — updated supported engines

Metadata

Metadata

Assignees

No one assigned

    Labels

    engine:claudeClaude Code CLI (Anthropic)enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions