#how can i get text low, when i do /status

1 messages · Page 1 of 1 (latest)

neon cedarBOT
junior magnetBOT
#

Let me check the docs/source so I don’t make up a config key.

#

Text: low is not controlled by /verbose off.

What’s going on:

  • /verbose off hides tool/debug chatter
  • Text: low is a model param for OpenAI / OpenAI Codex
  • if that line disappeared, you’re usually on a different provider/model, or it isn’t set for the active model

Try this in your config:

{
  agents: {
    defaults: {
      model: "openai/gpt-5.4", // or openai-codex/gpt-5.4
      models: {
#
        "openai/gpt-5.4": {
          params: { textVerbosity: "low" }
        }
      }
    }
  }
}

Then restart:

openclaw gateway restart

And in the chat/session:

whole sapphire
#

is channels.telegram.streaming.mode set to "partial" and /reasoning steam the same?

junior magnetBOT
#

Not the same.

Also, for Telegram the key is usually:

channels: {
  telegram: {
    streaming: "partial"
  }
}

not channels.telegram.streaming.mode.

Difference:

  • channels.telegram.streaming: "partial" = UI transport
#
  • one preview message gets edited as the reply is generated
  • /reasoning stream = what content gets shown
    • on Telegram, it sends the reasoning into that live preview while generating
    • final answer is sent without the reasoning text

So they’re related, but not equivalent.

If you want less noise:

  • /reasoning off
  • /verbose off
  • channels.telegram.streaming: "off" if you also want to kill live preview edits
  • textVerbosity: "low" is a separate OpenAI/Codex brevity setting

Docs: https://docs.openclaw.ai/channels/telegram and https://docs.openclaw.ai/concepts/streaming

whole sapphire
#

"openai-codex": {
"baseUrl": "https://chatgpt.com/backend-api",
"api": "openai-codex-responses",
"models": [
{
"id": "gpt-5.4",
"name": "GPT-5.4",
"api": "openai-codex-responses",
"reasoning": true,
"input": [
"text",
"image"
],
"contextWindow": 1050000,
"maxTokens": 128000
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "openai-codex/gpt-5.4",
"fallbacks": []
},
"models": {
"openai-codex/gpt-5.4": {
"params": {
"textVerbosity": "low"
}
},
"xai/grok-4-1-fast-reasoning": {},
"anthropic/claude-opus-4-6": {
"alias": "opus"
},
"anthropic/claude-sonnet-4-6": {
"alias": "sonnet"
},
"claude-cli/claude-opus-4-6": {},
"claude-cli/claude-sonnet-4-6": {},
"claude-cli/claude-opus-4-5": {},
"claude-cli/claude-sonnet-4-5": {},
"claude-cli/claude-haiku-4-5": {}
},

i still dont see it in my status

junior magnetBOT
#

I’m going one level deeper, this smells like either the session is actually running a different active model, or /status is reading a path that is not the one you think.

#

You’re not crazy, that config snippet is correct.

If /status still does not show Text: low, then it’s usually one of these:

  1. the gateway is still running the old config
  2. the service is using a different config file
  3. that session is actually on a different active model than openai-codex/gpt-5.4

Please paste these 4 things:

openclaw --version
openclaw gateway status
openclaw config get 'agents.defaults.model.primary'
openclaw config get 'agents.defaults.models["openai-codex/gpt-5.4"].params'
whole sapphire
#

openclaw config get 'agents.defaults.models["openai-codex/gpt-5.4"].params'

🦞 OpenClaw 2026.4.9 (0512059) — Open source means you can see exactly how I judge your config.

Config path not found: agents.defaults.models["openai-codex/gpt-5.4"].params

junior magnetBOT
#

My bad, that one was on me. config get wants the bracket key without inner quotes.

Try:

openclaw config get 'agents.defaults.models[openai-codex/gpt-5.4].params'

or, if you want to inspect the whole block:

openclaw config get agents.defaults.models

If that shows:

#
{ textVerbosity: "low" }

then your config is fine, and the problem is likely one of these:

  • /status is showing a different active model
  • the session has a model override
  • the gateway needs a restart / is using another config path

If you can, paste these next:

openclaw gateway status

and the full /status, especially the đź§  Model: line.

#

If this fixed the command syntax, glad we caught it 🙂

whole sapphire
#

OpenClaw 2026.4.9 (0512059) — iMessage green bubble energy, but for everyone.

│
â—‡
Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-10.log
Command: /usr/bin/node /usr/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: running (pid 1109, state active, sub running, last exit 0, reason 0)
RPC probe: ok

Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting

junior magnetBOT
#

Nice, this helps. Your gateway is reading the same config file the CLI is, so we can rule that out.

So now the likely problem is not config path, it’s one of these:

  • the config block is not actually present where we think it is
  • the session is running a different model
  • /status has a small regression on 2026.4.9

Please run these next:

openclaw config get 'agents.defaults.model.primary'
openclaw config get 'agents.defaults.models[openai-codex/gpt-5.4]'

Then paste the full /status, especially these lines if present:

#
  • đź§  Model: ...
  • ↪️ Fallback: ...

Also, if you just edited config, do a hard refresh once:

openclaw gateway restart

then in chat:

/new
/status

At this point I’m pretty suspicious the session is not actually on openai-codex/gpt-5.4, even though that’s your default.

whole sapphire
#

i also want to make reasoning stream to be fully off by default

junior magnetBOT
#

Yep, for default off set:

{
  agents: {
    defaults: {
      reasoningDefault: "off"
    }
  }
}

Or per agent:

{
#
  agents: {
    list: [
      {
        id: "main",
        reasoningDefault: "off"
      }
    ]
  }
}

Important bit: your current chat can still have a stored session override of stream, and that wins over the default.

So do both:

  1. set reasoningDefault: "off" in config
#
  1. in this chat, send:
/reasoning off

If you want the session to go back to following defaults later, set it to inherit in the Sessions UI.

If you also want Telegram to stop doing live preview edits entirely, that is separate:

channels: {
  telegram: {
    streaming: "off"
  }
}
whole sapphire
#

does reasoning steam cause context blot, or increase my context window?

junior magnetBOT
#

Not really, /reasoning stream itself is mostly a visibility setting.

Short version:

  • No, it does not increase your model’s max context window
  • No, stream vs off is not the main cause of context bloat
  • Yes, if the model produces reasoning, those tokens still count toward usage/context budget for that run

So the bigger knob is usually this part from your status:

Think: high

That is much more likely to increase token burn than reasoning stream.

Rule of thumb:

#
  • /reasoning off = hide reasoning
  • /reasoning stream = show reasoning in the preview
  • /think high = model may spend more tokens thinking

If you want less token burn + less rambling, I’d do:

/think low
/reasoning off
/verbose off

And for defaults:

{
whole sapphire
#

"agents": {
"defaults": {
"reasoningDefault": "off",
"model": {
"primary": "openai-codex/gpt-5.4",
"fallbacks": []
},
"models": {
"openai-codex/gpt-5.4": {
"params": {
"textVerbosity": "low"
}
},

this not working

junior magnetBOT
#

Yeah, I think I see the problem now.

Your config is probably fine, but this thread already has saved session overrides.

That’s why you still see stuff like:

  • Think: high
  • Reasoning: stream

reasoningDefault: "off" does not overwrite an existing thread/session override.

Fix this thread right now

Send these as standalone messages in this thread:

#
/model openai-codex/gpt-5.4
/think low
/reasoning off

Then send a normal prompt, then /status again.

Important

There are 2 layers here:

  1. Config defaults
    applies to new sessions, or sessions set to inherit

  2. Session overrides
    sticky per thread/chat, and they win over defaults

#

So for this thread, you either need to:

  • explicitly set the thread with the slash commands above, or
  • open Sessions UI and set model / think / reasoning back to inherit

If after forcing:

/model openai-codex/gpt-5.4

you still do not see Text: low, then I’d start calling that a /status display bug on 2026.4.9, because your config snippet itself looks right.

whole sapphire
#

text low is working

junior magnetBOT
#

Nice, glad we caught it 🎉

So the main culprit was the sticky session overrides, not textVerbosity.

Good steady-state setup:

agents: {
  defaults: {
    thinkingDefault: "low",
    reasoningDefault: "off"
  }
}

And in any noisy existing thread:

#
/think low
/reasoning off

If this fixed it, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow can index it for the next person.

whole sapphire
#

i have other models in agents defaults

junior magnetBOT
#

That’s totally fine.

agents.defaults.models can contain lots of models.
textVerbosity: "low" only applies to the matching model entry.

So this is valid:

agents: {
  defaults: {
    model: { primary: "openai-codex/gpt-5.4", fallbacks: [] },
    models: {
      "openai-codex/gpt-5.4": {
        params: { textVerbosity: "low" }
      },
      "anthropic/claude-opus-4-6": {},
#
      "xai/grok-4-1-fast-reasoning": {}
    }
  }
}

What matters is:

  • if the active model is openai-codex/gpt-5.4, Text: low can apply
  • if the session switches to Claude/Grok/other model, that line will disappear

So other models in agents.defaults.models are not the problem.
The important part is which model the thread is actually using right now.

whole sapphire
#

where can i put reasoningDefault: "off"

junior magnetBOT
#

Put it here, under agents.defaults:

{
  agents: {
    defaults: {
      reasoningDefault: "off",
      model: {
        primary: "openai-codex/gpt-5.4",
        fallbacks: [],
      },
      models: {
        "openai-codex/gpt-5.4": {
          params: {
            textVerbosity: "low",
          },
#
        },
        "anthropic/claude-opus-4-6": {},
        "xai/grok-4-1-fast-reasoning": {},
      },
    },
  },
}

If you want it only for one agent, put it on that agent instead:

{
  agents: {
    list: [
#
      {
        id: "main",
        reasoningDefault: "off",
      },
    ],
  },
}

One important gotcha: existing threads can still have a saved override, so for this current thread also send:

/reasoning off

If this fixed it, please right-click the solution message → Apps → ✅ Mark Solution.

whole sapphire
#

what are max tokens "maxTokens": 128000

junior magnetBOT
#

maxTokens: 128000 means the model can generate up to 128k output tokens in one reply.

Think of it like this:

  • contextWindow = total room for input + history + prompt + output
  • maxTokens = the maximum size of the answer itself

So in your example:

  • contextWindow: 1050000
  • maxTokens: 128000

means roughly:

  • the model can read a very large total context
  • but any single response is capped at 128k tokens max
#

It does not mean it will use 128k every time, just that it is allowed to go that high.

Easy mental model:

  • contextWindow = size of the whole bucket
  • maxTokens = max amount it can pour out in one response
whole sapphire
#

what happens if the reply exceeds that

junior magnetBOT
#

Usually one of these happens:

  1. the model stops at the cap

    • reply gets cut off
    • can end mid-sentence or mid-code block
  2. the provider rejects the request

    • if prompt + expected output would break provider limits
  3. OpenClaw chunks chat delivery

    • if the answer is long for Discord/Telegram/etc
    • but that is channel chunking, not a bypass of maxTokens

So maxTokens is basically a hard ceiling on one model response.

If it hits that ceiling, the normal symptom is:
“answer just stops”

#

Then you usually need to say:

continue

or ask it to answer more briefly.

whole sapphire
#

my openclaw is using significant cpu usage why?

junior magnetBOT
#

If you’re using openai-codex/gpt-5.4, the actual model thinking is remote, so reasoning/text verbosity by itself should not make the OpenClaw process burn CPU.

So high CPU usually means OpenClaw is doing local work like:

  • compaction / summarization
  • heartbeats or crons
  • memory indexing / embeddings
  • media processing (images, PDFs, audio)
  • browser / exec / tool runs
  • or a bad loop / bug

Rule of thumb:

  • High CPU only while replying = probably active tool/media/memory work
  • High CPU while idle = more suspicious, probably worth digging into

Best next checks:

#
openclaw status --all
openclaw logs --follow

And tell me this too:

  • is CPU high only during replies
  • or even when idle

If it’s idle and still chewing CPU, I’m leaning bug or a background task loop.

whole sapphire
#

! Port 18789
Port 18789 is already in use.

  • pid 16810 root: openclaw-gateway (127.0.0.1:18789)
  • Gateway already running locally. Stop it (openclaw gateway stop) or use a different port.
junior magnetBOT
#

Aha, this explains a lot.

You almost certainly have two gateways on the same machine:

  • your user systemd service
  • a root-owned openclaw-gateway already holding port 18789

That can absolutely cause:

  • weird /status behavior
  • config seeming ignored
  • extra CPU
  • “why is this not using the settings I changed?”

Because the port owner is the one actually answering on 127.0.0.1:18789.

Check both services

#
systemctl --user status openclaw-gateway
sudo systemctl status openclaw-gateway
ps -fp 1109 16810

What to do

Keep one gateway only, not both.

Usually for a personal setup, I’d keep the user service and remove/stop the root/system one. If you prefer the system service, then stop/disable the user one instead.

After that, restart the one you keep, then test again:

openclaw gateway restart