#with chatgpt5.4 as primary model, can openclaw read from images out of the box?
1 messages · Page 1 of 1 (latest)
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.imageModelis 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.
my agent lost the ability after updating to 4.26
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
If that fails, the model is no longer being seen as image-capable. Quick workaround is usually:
openclaw models set-image <known-vision-provider/model>
openclaw gateway restart
For custom/proxy model IDs, make sure the model metadata has input: ["text", "image"]; otherwise OpenClaw treats it as text-only after catalog normalization.
Docs: https://docs.openclaw.ai/nodes/media-understanding and https://docs.openclaw.ai/concepts/model-providers
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```
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.
If that fixes it, this smells like a 2026.4.26 Codex image-capability regression. Worth filing with this models status output: https://github.com/openclaw/openclaw/issues
Looks like a Linux VPS from the root@vmi... prompt, but yeah worth confirming with:
cat /etc/os-release
uname -a
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```
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:
RuntimeListeningConnectivity probeLast gateway error
Common after-restart causes:
- Gateway is only bound to loopback (
127.0.0.1:18789) â reachable only from the VPS or via SSH tunnel. - Port mismatch â service still starts old
--portafter config changed. Fix is usually:openclaw doctor --fix openclaw gateway restart - Non-loopback bind without auth â
lan/tailnetrequires 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.
â
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?
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.
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```
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
it's a lot of text to paste here
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.
how do i attach a txt file here?
In Discord:
-
Save the file:
nano openclaw-gateway-debug.txtor generate it with the command above.
-
Download it from the VPS to your computer, e.g.:
scp root@94.136.184.173:/root/openclaw-gateway-debug.txt . -
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.
it's not possible to attach files here
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.
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
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-openclawis loaded - its
llm_output/agent_endhooks 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
no, help me fix the opik error
â ïž Agent couldn't generate a response. Note: some tool actions may have already been executed â please verify before retrying.
no, help me fix the opik error
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.
why did this happen after the update?
Because the update is now enforcing the plugin safety gate more strictly/visibly.
opik-openclaw registers sensitive typed hooks:
llm_outputâ can see model outputsagent_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.
how to update opik?
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
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).```
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
turned on trust flag and restarted
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
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`.```
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.
`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`
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.
this update really broke my setup
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.14package 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.
no progress
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.
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
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.
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
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: