#with chatgpt5.4 as primary model, can openclaw read from images out of the box?

1 messages · Page 1 of 1 (latest)

old steeple
#

with chatgpt5.4 as primary model, can openclaw read from images out of the box?

coral yarrowBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

simple quailBOT
#

Yes — assuming your primary is a vision-capable GPT-5.4 route, no separate imageModel is needed.

OpenClaw’s default behavior is:

  • image attachments are preserved and passed through
  • if the active primary model supports vision, OpenClaw sends the original image to it directly
  • agents.defaults.imageModel is only needed when the primary model can’t accept images
  • for custom/unknown model IDs, mark them image-capable with --custom-image-input

Useful checks:

openclaw models status

If it doesn’t work, post openclaw --version + openclaw models status.

old steeple
#

my agent lost the ability after updating to 4.26

simple quailBOT
#

That shouldn’t regress. If you mean 2026.4.26, I’d suspect model capability detection / media provider routing after the update.

Can you paste these?

openclaw --version
openclaw models status
openclaw config get agents.defaults.model --json
openclaw config get agents.defaults.imageModel --json

Also try a direct smoke test with any local image:

openclaw infer model run --gateway --model <your-provider/model> --prompt "Describe this image in one sentence" --file ./photo.jpg --json
old steeple
#
root@vmi3151434:~ openclaw --version
OpenClaw 2026.4.26 (be8c246)
root@vmi3151434:~ openclaw models status

:lobster: OpenClaw 2026.4.26 (be8c246) — Finally, a use for that always-on Mac Mini under your desk.

Config        : ~/.openclaw/openclaw.json
Agent dir     : ~/.openclaw/agents/main/agent
Default       : openai-codex/gpt-5.4
Fallbacks (3) : openrouter/stepfun/step-3.5-flash, openrouter/z-ai/glm-5.1, google/gemini-flash-latest
Image model   : -
Image fallbacks (0): -
Aliases (0)   : -
Configured models (6): openai-codex/gpt-5.4, openai-codex/gpt-5.4-mini, openai-codex/gpt-5.4-pro, google/gemini-flash-latest, google/gemini-2.5-pro, google/gemini-flash-lite-latest

Auth overview
Auth store    : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env     : off
Providers w/ OAuth/tokens (2): openai-codex (1), openrouter (1)
- google effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | google:default=ref(env:GOOGLE_API_KEY) | env=AIzaSyD6...eYObVDuA | source=env: GOOGLE_API_KEY
- openai-codex effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=1, token=0, api_key=0) | openai-codex:default=OAuth
- openrouter effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=1, api_key=0) | openrouter:manual=token:ref(env:OPENROUTER_API_KEY) | env=sk-or-v1...10255840 | source=env: OPENROUTER_API_KEY
- perplexity effective=env:sk-or-v1...10255840 | env=sk-or-v1...10255840 | source=env: OPENROUTER_API_KEY

OAuth/token status
- openai-codex usage: 5h 88% left ⏱2h 38m · Week 98% left ⏱6d 14h
  - openai-codex:default ok expires in 5d
- openrouter
  - openrouter:manual static```
simple quailBOT
#

Yep, that output explains it: Image model is -, and your primary is openai-codex/gpt-5.4. If 2026.4.26 is now seeing that Codex model as text-only, image attachments won’t be injected.

Fast workaround since you already have Google auth:

openclaw models set-image google/gemini-flash-latest
openclaw gateway restart

Then resend the image. /status after an image turn should show something like:

📎 Media: image ok (google/gemini-flash-latest)

Important bit: your normal Fallbacks list doesn’t necessarily act as image routing. agents.defaults.imageModel is the explicit vision fallback path.

#

Looks like a Linux VPS from the root@vmi... prompt, but yeah worth confirming with:

cat /etc/os-release
uname -a
old steeple
#

gateway restarted without error but it's not reachable anymore.

#
Reachable: no
Capability: unknown
Probe budget: 3000ms

Discovery (this machine)
Found 0 gateways via Bonjour (local.)
Tip: if the gateway is remote, mDNS won’t cross networks; use Wide-Area Bonjour (split DNS) or SSH tunnels.

Targets
Local loopback ws://127.0.0.1:18789
  Connect: failed - timeout · Capability: unknown```
simple quailBOT
#

Oof. Since you still have shell on the VPS, check local gateway state first — don’t debug from the browser yet.

Please run and paste output, but redact tokens/URLs if any appear:

openclaw gateway status --deep
openclaw config get gateway.bind
openclaw config get gateway.port
openclaw logs --limit 200 --plain

The key lines in gateway status are:

  • Runtime
  • Listening
  • Connectivity probe
  • Last gateway error
#

Common after-restart causes:

  1. Gateway is only bound to loopback (127.0.0.1:18789) — reachable only from the VPS or via SSH tunnel.
  2. Port mismatch — service still starts old --port after config changed. Fix is usually:
    openclaw doctor --fix
    openclaw gateway restart
    
  3. Non-loopback bind without auth — lan/tailnet requires gateway auth token/password, otherwise OpenClaw refuses to bind.

Docs: https://docs.openclaw.ai/gateway/troubleshooting and https://docs.openclaw.ai/gateway

#

That output means the local Gateway isn’t answering on 127.0.0.1:18789 — mDNS isn’t the problem.

Next checks:

openclaw gateway status --deep
openclaw logs --limit 300 --plain
openclaw doctor
ss -ltnp | grep 18789 || true

If you’re on Linux/systemd, also:

systemctl --user status openclaw-gateway --no-pager -l
journalctl --user -u openclaw-gateway -n 200 --no-pager
#

If ss shows something listening but the probe times out, the Gateway process is likely hung during startup. If nothing is listening, the service probably exited or failed before bind.

Paste the first error-ish lines from logs/status — redact tokens. Don’t run doctor --fix yet until we see whether this is config, service, or startup hang.

old steeple
#
◇
Gateway Status
Reachable: no
Capability: unknown
Probe budget: 3000ms

Discovery (this machine)
Found 0 gateways via Bonjour (local.)
Tip: if the gateway is remote, mDNS won’t cross networks; use Wide-Area Bonjour (split DNS) or SSH tunnels.

Targets
Local loopback ws://127.0.0.1:18789
  Connect: ok (52ms) · Capability: admin-capable · Read probe: failed - timeout

root@vmi3151434:~ openclaw gateway probe

🩞 OpenClaw 2026.4.26 (be8c246) — Welcome to the command line: where dreams compile and confidence segfaults.

│
◇
Gateway Status
Reachable: yes
Capability: admin-capable
Probe budget: 3000ms

Discovery (this machine)
Found 0 gateways via Bonjour (local.)
Tip: if the gateway is remote, mDNS won’t cross networks; use Wide-Area Bonjour (split DNS) or SSH tunnels.

Targets
Local loopback ws://127.0.0.1:18789
  Connect: ok (106ms) · Capability: admin-capable · Read probe: ok
  Gateway: vmi3151434 (94.136.184.173) · linux 6.8.0-110-generic · app 2026.4.26
  Wide-area discovery: unknown

it's coming on and off, what's going on?

simple quailBOT
#

That pattern is not “port unreachable” anymore. This line is the clue:

Connect: ok ... Read probe: failed - timeout

So the Gateway accepts the WebSocket, but an RPC/read diagnostic doesn’t answer within 3s. That usually means the Gateway process is alive but intermittently busy / event-loop stalled / stuck during startup work, not that networking is flapping.

Try:

openclaw gateway probe --timeout 10000
openclaw logs --limit 400 --plain | egrep -i "error|fatal|timeout|event|stuck|startup|plugin|memory|media"
free -h
uptime
#

If --timeout 10000 succeeds consistently but 3000ms fails, it’s likely just slow/blocked. If it keeps failing randomly, grab:

journalctl --user -u openclaw-gateway -n 300 --no-pager

Also run:

openclaw update status

because 2026.4.26 had some plugin/provider/media startup churn, and this smells adjacent. Don’t keep restarting in a loop yet — logs right after a timeout are the useful bit.

old steeple
#
Reachable: yes
Capability: admin-capable
Probe budget: 10000ms

Discovery (this machine)
Found 0 gateways via Bonjour (local.)
Tip: if the gateway is remote, mDNS won’t cross networks; use Wide-Area Bonjour (split DNS) or SSH tunnels.

Targets
Local loopback ws://127.0.0.1:18789
  Connect: ok (43ms) · Capability: admin-capable · Read probe: ok
  Gateway: vmi3151434 (94.136.184.173) · linux 6.8.0-110-generic · app 2026.4.26
  Wide-area discovery: unknown```
simple quailBOT
#

That confirms it: Gateway is alive, but the 3s read probe is sometimes too short. So it’s not networking flapping — it’s likely the Gateway event loop/startup work getting slow or briefly wedged.

Next thing to find is why it’s slow:

free -h
uptime
openclaw logs --limit 400 --plain | egrep -i "error|fatal|timeout|event|stuck|startup|plugin|memory|media|slow"
journalctl --user -u openclaw-gateway -n 200 --no-pager

If those don’t show anything obvious, try:

openclaw status --all
#

For now, use the longer probe timeout when diagnosing:

openclaw gateway probe --timeout 10000

Once it’s stable enough, retry the image workaround:

openclaw models set-image google/gemini-flash-latest
openclaw gateway restart
old steeple
#

it's a lot of text to paste here

simple quailBOT
#

Totally fair — don’t paste the whole wall.

Run this smaller filter and paste just the output:

free -h
uptime
openclaw logs --limit 500 --plain | grep -Ei "error|fatal|timeout|event.?loop|degraded|stuck|startup|plugin|memory|media|uncaught|EADDRINUSE" | tail -80

If that’s still huge, attach a .txt file instead:

{
  openclaw gateway status --deep
  echo
#
  openclaw logs --limit 500 --plain
  echo
  journalctl --user -u openclaw-gateway -n 300 --no-pager
} > openclaw-gateway-debug.txt

Before uploading, redact API keys/tokens/OAuth-looking blobs. We mainly need errors/timeouts around gateway startup.

old steeple
#

how do i attach a txt file here?

simple quailBOT
#

In Discord:

  1. Save the file:

    nano openclaw-gateway-debug.txt
    

    or generate it with the command above.

  2. Download it from the VPS to your computer, e.g.:

    scp root@94.136.184.173:/root/openclaw-gateway-debug.txt .
    
  3. In this Discord thread, click the + / upload button next to the message box, pick the .txt, and send.

If you’re on mobile, you can also drag/drop the file into Discord desktop/web.

old steeple
#

it's not possible to attach files here

simple quailBOT
#

No worries — use a tiny filtered paste instead.

Run this and paste only the output:

{
  echo "== system =="
  free -h
  uptime
  echo
  echo "== gateway =="
  openclaw gateway status --deep
  echo
  echo "== errors =="
  openclaw logs --limit 500 --plain \
    | grep -Ei "error|fatal|timeout|event.?loop|degraded|stuck|startup|plugin|memory|media|uncaught|EADDRINUSE|killed|oom" \
#
    | tail -60
} 2>&1

If it’s still too much, just paste the last 20 lines from the == errors == section.

old steeple
#

2026-04-29T11:21:49.464Z info gateway {"subsystem":"gateway"} [plugins] typed hook "llm_output" blocked because non-bundled plugins must set plugins.entries.opik-openclaw.hooks.allowConversationAccess=true (plugin=opik-openclaw, source=/root/.openclaw/extensions/opik-openclaw/index.ts)
2026-04-29T11:21:49.468Z info gateway {"subsystem":"gateway"} [plugins] typed hook "agent_end" blocked because non-bundled plugins must set plugins.entries.opik-openclaw.hooks.allowConversationAccess=true (plugin=opik-openclaw, source=/root/.openclaw/extensions/opik-openclaw/index.ts)
2026-04-29T11:21:49.477Z error (node:405656) ExperimentalWarning: SQLite is an experimental feature and might change at any time
2026-04-29T11:21:50.702Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-04-29T11:21:51.261Z info gateway {"subsystem":"gateway"} http server listening (4 plugins: discord, lossless-claw, memory-core, opik-openclaw; 34.8s)
2026-04-29T11:24:25.574Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} [krill] delaying provider startup 10s to reduce Discord startup rate limits
2026-04-29T11:24:27.480Z info plugins {"subsystem":"plugins"} opik: exporting traces to project "openclaw" (staleCleanup=on, staleTimeoutMs=300000, staleSweepMs=60000, flushRetryCount=2, flushRetryBaseDelayMs=250)
2026-04-29T11:28:25.632Z info Connect: ok (52ms) · Capability: admin-capable · Read probe: failed - timeout

simple quailBOT
#

That log points at opik-openclaw as the main suspect.

The SQLite warning is probably harmless. The important bits are:

  • Gateway took 34.8s to reach “http server listening”
  • non-bundled opik-openclaw is loaded
  • its llm_output / agent_end hooks are blocked because they need explicit conversation access
  • then probes intermittently time out

Don’t enable allowConversationAccess just to silence it — that gives the plugin access to conversation contents. First isolate it:

openclaw plugins disable opik-openclaw
openclaw gateway restart
openclaw gateway probe --timeout 3000
#

Then run the probe a few times. If it becomes stable, the issue is very likely the Opik plugin / hook behavior on 2026.4.26.

After that, retry the image fix:

openclaw models set-image google/gemini-flash-latest
openclaw gateway restart
old steeple
#

no, help me fix the opik error

simple quailBOT
#

⚠ Agent couldn't generate a response. Note: some tool actions may have already been executed — please verify before retrying.

old steeple
#

no, help me fix the opik error

simple quailBOT
#

Got it — the Opik “error” is OpenClaw blocking sensitive hooks until you explicitly trust the plugin.

If you want Opik traces to include model output / agent-end conversation data, run:

openclaw config set plugins.entries.opik-openclaw.hooks.allowConversationAccess true --strict-json
openclaw gateway restart

Then verify:

openclaw config get plugins.entries.opik-openclaw --json
openclaw logs --limit 100 --plain | grep -i opik

You should stop seeing:

#
typed hook "llm_output" blocked ...
typed hook "agent_end" blocked ...

Small privacy note: this lets opik-openclaw read raw conversation content for those hooks, which is exactly what tracing needs.

old steeple
#

why did this happen after the update?

simple quailBOT
#

Because the update is now enforcing the plugin safety gate more strictly/visibly.

opik-openclaw registers sensitive typed hooks:

  • llm_output — can see model outputs
  • agent_end — can see final conversation/run data

For non-bundled plugins, OpenClaw requires an explicit trust flag before those hooks can read conversation content:

openclaw config set plugins.entries.opik-openclaw.hooks.allowConversationAccess true --strict-json
openclaw gateway restart

So it’s not that Opik suddenly broke; OpenClaw is saying: “this external plugin wants conversation access, please explicitly approve that.”

If you trust Opik and want tracing, set the flag. If you don’t want raw conversation/model output exported to Opik, leave it blocked or disable the plugin.

old steeple
#

how to update opik?

simple quailBOT
#

Use the plugin updater:

openclaw plugins update opik-openclaw
openclaw gateway restart

Then check:

openclaw plugins inspect opik-openclaw
openclaw logs --limit 100 --plain | grep -i opik

If update says it can’t find an install record, reinstall it:

#
openclaw plugins install @opik/opik-openclaw --force
openclaw gateway restart

But note: updating Opik won’t remove the new safety warning by itself. For Opik tracing hooks, you still need:

openclaw config set plugins.entries.opik-openclaw.hooks.allowConversationAccess true --strict-json
openclaw gateway restart
old steeple
#
ClawHub code-plugin @opik/opik-openclaw@0.2.14 channel=community verification=source-linked
Compatibility: pluginApi=>=2026.3.2 minGateway=2026.3.2
ClawHub package "@opik/opik-openclaw" is community; review source and verification before enabling.
Downloading plugin @opik/opik-openclaw@0.2.14 from ClawHub

Extracting /tmp/openclaw-clawhub-package-KtZ21A/opik-openclaw.zip

Failed to update opik-openclaw: runtime extension entry not found: ./dist/index.js (ClawHub clawhub:@opik/opik-openclaw@0.2.14).```
simple quailBOT
#

That failure is a broken ClawHub package artifact, not your config.

It downloaded @opik/opik-openclaw@0.2.14, but the zip is missing the runtime file OpenClaw expects:

./dist/index.js

Opik’s repo says the plugin runtime entry points at ./dist/index.js, so that file has to be present in the packaged plugin. (github.com) OpenClaw also checks ClawHub first for bare plugin installs, which is why you hit the bad ClawHub artifact. (docs.openclaw.ai)

Try forcing npm instead:

openclaw plugins install npm:@opik/opik-openclaw --force
openclaw gateway restart
openclaw plugins inspect opik-openclaw
#

If latest npm also fails, pin the previous version:

openclaw plugins install npm:@opik/opik-openclaw@0.2.13 --force
openclaw gateway restart

After install, keep the trust flag if you want tracing:

openclaw config set plugins.entries.opik-openclaw.hooks.allowConversationAccess true --strict-json
openclaw gateway restart
old steeple
#

turned on trust flag and restarted

simple quailBOT
#

Nice — then check whether the block is gone:

openclaw logs --limit 150 --plain | grep -i opik

You want to not see:

typed hook "llm_output" blocked
typed hook "agent_end" blocked

If it’s clean, Opik is fixed.

Then finish the original image issue:

#
openclaw models set-image google/gemini-flash-latest
openclaw gateway restart
openclaw models status

models status should show:

Image model : google/gemini-flash-latest
old steeple
#
Gateway not reachable. Is it running and accessible?
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /root/.openclaw/openclaw.json
Bind: loopback
Hint: run `openclaw doctor`.```
simple quailBOT
#

Since this happened right after enabling the trust flag + restart, the gateway may be failing during startup now.

Run these in order:

openclaw gateway status --deep --no-probe
openclaw gateway status --deep --timeout 10000
journalctl --user -u openclaw-gateway -n 120 --no-pager

If you want a quick recovery path, disable Opik and restart:

openclaw plugins disable opik-openclaw
openclaw gateway restart
openclaw gateway probe --timeout 10000
#

That will tell us if Opik is now blocking startup once it has conversation access. If disabling makes gateway reachable again, leave Opik disabled and file the ClawHub/update packaging issue separately.

old steeple
#

`Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-29.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 406515, state active, sub running, last exit 0, reason 0)
Port 18789 is already in use.

  • pid 406515 root: openclaw-gateway (127.0.0.1:18789)
  • Gateway already running locally. Stop it (openclaw gateway stop) or use a different port.
    Listening: 127.0.0.1:18789
    Troubles: run openclaw status
    Troubleshooting: https://docs.openclaw.ai/troubleshooting`
simple quailBOT
#

Good — gateway is running and listening. So openclaw logs failing was probably the same intermittent read-probe timeout, not a dead service.

Use the file log directly instead of RPC:

grep -i opik /tmp/openclaw/openclaw-2026-04-29.log | tail -80

Also check whether the gateway RPC is just slow:

openclaw gateway probe --timeout 10000

If the Opik “blocked” lines are gone, the trust flag worked. If new Opik errors appear, paste just those grep -i opik lines.

One more thing: your service is loopback-only, so remote browser access won’t work unless you SSH tunnel or change bind intentionally. For local CLI on the VPS, loopback is fine.

#

They’re on Linux:

linux 6.8.0-110-generic

Looks like an Ubuntu-ish VPS/kernel from the generic kernel naming and systemd --user service setup.

old steeple
#

this update really broke my setup

simple quailBOT
#

Yeah, that’s frustrating. I’d split recovery into stabilize first, then decide whether to roll back.

Fastest stabilize path:

openclaw plugins disable opik-openclaw
openclaw models set-image google/gemini-flash-latest
openclaw gateway restart
openclaw gateway probe --timeout 10000
openclaw models status

That should get:

  • gateway reachable again
  • image reading working via Gemini
  • Opik out of the startup/hook path
#

If you’d rather roll back, docs say npm installs can pin a version:

export OPENCLAW_NO_AUTO_UPDATE=1
npm i -g openclaw@<last-good-version>
openclaw doctor
openclaw gateway restart

Use whatever version was working for you before 2026.4.26. Docs: https://docs.openclaw.ai/install/updating#rollback

I’d also file this as a GitHub issue once you’re stable: https://github.com/openclaw/openclaw/issues
There are two useful repro bits here: openai-codex/gpt-5.4 lost image behavior, and ClawHub @opik/opik-openclaw@0.2.14 is missing dist/index.js.

#

Current state from the thread:

  • Gateway is actually running/listening, but the 3s read probe times out intermittently.
  • Opik was hitting the new conversation-access safety gate; Damien enabled the trust flag.
  • Opik update via ClawHub failed because @opik/opik-openclaw@0.2.14 package is missing ./dist/index.js.
  • Image issue likely needs explicit image model set:
    openclaw models set-image google/gemini-flash-latest
    openclaw gateway restart
    

My recommendation right now is: disable Opik temporarily, set the image model, restart, confirm OpenClaw is stable, then deal with Opik packaging separately.

old steeple
#

no progress

simple quailBOT
#

Okay — let’s stop branching and do the smallest recovery path.

Run exactly this:

openclaw plugins disable opik-openclaw
openclaw models set-image google/gemini-flash-latest
openclaw gateway restart
sleep 10
openclaw gateway probe --timeout 10000
openclaw models status

Expected good signs:

#
Read probe: ok
Image model : google/gemini-flash-latest

If that works, your setup is back to usable. Then Opik can be handled separately — right now the ClawHub Opik update package itself appears broken, so trying to fix Opik first is likely wasting time.

old steeple
#

i have disabled opik and restarted

Gateway Status
Reachable: no
Capability: unknown
Probe budget: 3000ms

Discovery (this machine)
Found 0 gateways via Bonjour (local.)
Tip: if the gateway is remote, mDNS won’t cross networks; use Wide-Area Bonjour (split DNS) or SSH tunnels.

Targets
Local loopback ws://127.0.0.1:18789
  Connect: failed - timeout · Capability: unknown
simple quailBOT
#

Okay — with Opik disabled, this is no longer an Opik hook issue. The gateway either hasn’t finished startup yet or is wedged before accepting connections.

Check the actual service + file log directly:

openclaw gateway status --deep --no-probe
tail -120 /tmp/openclaw/openclaw-2026-04-29.log
journalctl --user -u openclaw-gateway -n 120 --no-pager

If the log still shows startup taking ~30s+, also try:

sleep 60
openclaw gateway probe --timeout 10000
#

If it becomes reachable after 60s, startup is just very slow. If not, paste the last ~40 lines from the tail output — that should show where startup is stuck now.

old steeple
#

i added you as friend but did not receive an dm

#

disabled opik and still in the dark. It seems the gateway is taking unusually long to be ready after a restart

simple quailBOT
#

Yeah, that matches what we’re seeing: not dead, just slow to become ready.

Let’s measure which startup phase is slow. Run this:

openclaw gateway stop
OPENCLAW_GATEWAY_STARTUP_TRACE=1 openclaw gateway --port 18789 --verbose 2>&1 | tee /tmp/openclaw-startup-trace.log

Wait until you see either:

http server listening

or it stalls for ~90s. Then paste only lines containing: