Skip to content

[Bug] Ollama reasoning models return empty content — agent responses are blank #246

@kakuteki

Description

@kakuteki

Description

When using Ollama with nemotron-3-nano:30b as the local inference provider, the OpenClaw agent returns blank responses in the dashboard chat. The gateway processes the request and the model generates output, but nothing is displayed to the user.

Root cause

Nemotron 3 Nano is a reasoning model. Ollama's OpenAI-compatible /v1/chat/completions endpoint puts the model's actual output into a reasoning field instead of content. OpenClaw reads content only, so the user sees an empty message.

Example raw response from Ollama:

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "",
      "reasoning": "The user wants: \"Say hello\"..."
    },
    "finish_reason": "stop"
  }]
}

content is an empty string. The real output sits in reasoning.

Sending "reasoning_effort": "none" forces the model to write directly into content and the response shows up correctly:

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "Hello! How can I assist you today?"
    },
    "finish_reason": "stop"
  }]
}

Steps to reproduce

  1. Install Ollama with nemotron-3-nano:30b on the host
  2. Run nemoclaw onboard, select Ollama as inference provider
  3. Open the dashboard, send any message
  4. Observe: the assistant bubble appears but contains no text

Environment

  • NemoClaw 0.1.0 / OpenClaw 2026.3.11
  • Ollama 0.18+ with nemotron-3-nano:30b
  • WSL2 Ubuntu 24.04, RTX 5090 32GB

What should happen

The agent should display the model's output regardless of whether the model uses content or reasoning fields.

Suggested fix

A few options (not mutually exclusive):

  1. Send reasoning_effort: "none" (or think: false) for models that don't need chain-of-thought — this is the simplest server-side fix and keeps the response format standard.
  2. Fall back to reasoning when content is empty — if the completion comes back with an empty content but a non-empty reasoning field, treat reasoning as the display text.
  3. Document the limitation — at minimum, the Ollama onboarding path (currently behind NEMOCLAW_EXPERIMENTAL=1) should warn that reasoning models may produce blank output, and suggest creating a non-reasoning model variant via ollama create.

Workaround

Create a non-reasoning model variant:

echo "FROM nemotron-3-nano:30b" | ollama create nemotron-nano-chat

Then set the inference model:

openshell inference set --no-verify --provider ollama-local --model nemotron-nano-chat

This works but the user shouldn't have to figure this out.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: local-modelsLocal model providers, downloads, launch, or connectivityarea: providersInference provider integrations and provider behavior

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions