Agent DailyAgent Daily
releaseintermediate

[Release] openclaw/openclaw v2026.3.24: openclaw 2026.3.24

By steipetegithub
View original on github

OpenClaw v2026.3.24 introduces significant enhancements across gateway compatibility, agent tooling, and platform integrations. Key updates include OpenAI API compatibility improvements, Microsoft Teams SDK migration with streaming support, skill installation recipes with one-click setup, and expanded platform support for Slack, Discord, Telegram, and WhatsApp. The release also addresses numerous security, sandbox, and reliability fixes across media dispatch, channel startup, and message routing.

Key Points

  • Add OpenAI-compatible `/v1/models` and `/v1/embeddings` endpoints with explicit model override forwarding for broader client and RAG compatibility
  • Implement `/tools` endpoint showing available tools with compact default and detailed views, plus live "Available Right Now" section in Control UI
  • Migrate Microsoft Teams to official SDK with streaming 1:1 replies, welcome cards, typing indicators, and native AI labeling following UX best practices
  • Add one-click install recipes for bundled skills (coding-agent, gh-issues, openai-whisper-api, session-logs, tmux, trello, weather) with dependency detection
  • Introduce Control UI skill status-filter tabs (All/Ready/Needs Setup/Disabled) with requirement details, toggle switches, and API key entry dialogs
  • Restore Slack rich reply parity with auto-rendered button/select options from trailing `Options:` lines and improved interactive setup defaults
  • Add `--container` and `OPENCLAW_CONTAINER` flags to run commands inside Docker/Podman OpenClaw containers
  • Implement Discord auto-thread LLM-generated naming via optional `autoThreadName: "generated"` while preserving message-based defaults
  • Add `before_dispatch` plugin hook with canonical inbound metadata and normal final-delivery path routing for TTS and routed delivery semantics
  • Fix critical security bypass in media dispatch preventing `mediaUrl`/`fileUrl` alias escapes from media-root restrictions

Found this useful? Add it to a playbook for a step-by-step implementation guide.

Workflow Diagram

Start Process
Step A
Step B
Step C
Complete
Quality

Concepts

Artifacts (5)

Container Command Flagbashcommand
openclaw --container <container-id> <command>
# or
OPENCLAW_CONTAINER=<container-id> openclaw <command>
Discord Auto-Thread Configurationjsonconfig
{
  "discord": {
    "autoThreadName": "generated"
  }
}
Plugin Before Dispatch Hookyamltemplate
hooks:
  before_dispatch:
    - handler: processInboundMetadata
      metadata:
        canonical: true
        preserveTTS: true
        preserveRoutedDelivery: true
Skill Installation Recipe Examplejsonconfig
{
  "skills": [
    {
      "name": "coding-agent",
      "installRecipe": {
        "dependencies": ["node", "npm"],
        "setupCommand": "npm install",
        "apiKeyRequired": false
      }
    },
    {
      "name": "openai-whisper-api",
      "installRecipe": {
        "dependencies": ["python", "ffmpeg"],
        "setupCommand": "pip install openai",
        "apiKeyRequired": true,
        "apiKeyPath": "~/.openclaw/skills/whisper/api-key"
      }
    }
  ]
}
Node Version Preflight Checkbashscript
#!/bin/bash
# Preflight check before openclaw update
REQUIRED_NODE="22.14"
CURRENT_NODE=$(node -v | cut -d'v' -f2)

if ! node -e "require('semver').gte('$CURRENT_NODE', '$REQUIRED_NODE')" 2>/dev/null; then
  echo "Error: Node $REQUIRED_NODE+ required. Current: $CURRENT_NODE"
  echo "Please upgrade Node.js before updating OpenClaw"
  exit 1
fi