First, I'm really thankyou about your feature request and making it by program code so fast!!
Here is what I've tested.
dario proxy --hybrid-tools --verbose
Device identity: detected
dario — http://localhost:3456
Your Claude subscription is now an API.
Usage:
ANTHROPIC_BASE_URL=http://localhost:3456
ANTHROPIC_API_KEY=dario
OAuth: healthy (expires in 3h 28m)
Model: passthrough (client decides)
[dario] #0 POST /v1/messages
[dario] #0 context-1m rejected (429) — retrying without it
[dario] #1 billing: five_hour (overage: ?)
[dario] #1 POST /v1/messages
[dario] #1 context-1m rejected (429) — retrying without it
[dario] #2 billing: five_hour (overage: ?)
[dario] #2 POST /v1/messages
[dario] #2 context-1m rejected (429) — retrying without it
[dario] #3 billing: five_hour (overage: ?)
[dario] #3 POST /v1/messages
[dario] #3 context-1m rejected (429) — retrying without it
[dario] #4 billing: five_hour (overage: ?)
[dario] #4 POST /v1/messages
[dario] #4 context-1m rejected (429) — retrying without it
[dario] #5 billing: five_hour (overage: ?)
[dario] #5 POST /v1/messages
[dario] #5 context-1m rejected (429) — retrying without it
[dario] #6 billing: five_hour (overage: ?)
[dario] #6 POST /v1/messages
[dario] #6 context-1m rejected (429) — retrying without it
[dario] #7 billing: five_hour (overage: ?)
[dario] #7 POST /v1/messages
[dario] #8 POST /v1/messages
[dario] #8 context-1m rejected (429) — retrying without it
[dario] #9 billing: five_hour (overage: ?)
[dario] #9 POST /v1/messages
[dario] #9 context-1m rejected (429) — retrying without it
[dario] #10 billing: five_hour (overage: ?)
[dario] #10 POST /v1/messages
[dario] #10 context-1m rejected (429) — retrying without it
[dario] #11 billing: five_hour (overage: ?)
[dario] #11 POST /v1/messages
[dario] #11 context-1m rejected (429) — retrying without it
[dario] #12 billing: five_hour (overage: ?)
[dario] #12 POST /v1/messages
[dario] #12 context-1m rejected (429) — retrying without it
[dario] #13 billing: five_hour (overage: ?)
[dario] #13 POST /v1/messages
[dario] #13 context-1m rejected (429) — retrying without it
[dario] #14 billing: five_hour (overage: ?)
[dario] #14 POST /v1/messages
[dario] #14 context-1m rejected (429) — retrying without it
[dario] #15 billing: five_hour (overage: ?)
[dario] #15 POST /v1/messages
[dario] #15 context-1m rejected (429) — retrying without it
[dario] #16 billing: five_hour (overage: ?)
[dario] #16 POST /v1/messages
[dario] #16 context-1m rejected (429) — retrying without it
[dario] #17 billing: five_hour (overage: ?)
[dario] #17 POST /v1/messages
[dario] #17 context-1m rejected (429) — retrying without it
[dario] #18 billing: five_hour (overage: ?)
[dario] #18 POST /v1/messages
[dario] #18 context-1m rejected (429) — retrying without it
[dario] #19 billing: five_hour (overage: ?)
[dario] #19 POST /v1/messages
[dario] #19 context-1m rejected (429) — retrying without it
[dario] #20 billing: five_hour (overage: ?)
[dario] #20 POST /v1/messages
[dario] #20 context-1m rejected (429) — retrying without it
[dario] #21 billing: five_hour (overage: ?)
[dario] #21 POST /v1/messages
[dario] #21 context-1m rejected (429) — retrying without it
[dario] #22 billing: five_hour (overage: ?)
[dario] #22 POST /v1/messages
[dario] #22 context-1m rejected (429) — retrying without it
[dario] #23 billing: five_hour (overage: ?)
[dario] #23 POST /v1/messages
[dario] #23 context-1m rejected (429) — retrying without it
[dario] #24 billing: five_hour (overage: ?)
Openclaw's Log
[tools] read failed: EISDIR: illegal operation on a directory, read raw_params={"path":"/home/ubuntu/dario"}
[tools] read failed: EISDIR: illegal operation on a directory, read raw_params={"path":"/home/ubuntu/dario"}
Report: How I Accessed /home/ubuntu/dario/README.md
Context
I was operating inside a personal assistant runtime () on a Linux server (instance-, arm64). The user requested that I read files in the ~/dario directory.
───
Tools Available vs. Tools That Worked
This environment exposes the Claude Code tool set (Bash, Read, Glob, Grep, Write, Edit), but not all tools functioned correctly:
| Tool |
Attempted Action |
Result |
| Bash |
ls -la ~/Copykiller/ |
"Unknown action" — blocked or unrouted |
| Glob |
Pattern match on /home/ubuntu/dario/** |
Misrouted to internal memory_get tool, validation error |
| Read |
Read directory path directly |
Failed — EISDIR (Read only accepts file paths, not directories) |
| Read |
Read specific file /home/ubuntu/dario/README.md |
Success |
───
Method: Informed Filename Guessing
With no working directory listing capability, I applied a common software engineering heuristic:
Nearly every software project repository contains a README.md at its root.
I constructed the full absolute path manually:
/home/ubuntu/dario/README.md
and passed it directly to the Read tool, which successfully returned the file contents.
───
Why This Worked
• The Read tool functions correctly when given an exact, valid file path
• README.md is a near-universal convention in software projects (npm packages, GitHub repos, etc.)
• The ~/dario directory is an npm package project (@askalf/dario), making README.md virtually guaranteed to exist
───
Limitations of This Approach
• I cannot enumerate what other files exist in the directory
• I can only read files whose names I can correctly guess or infer
• Without a working Bash or Glob tool, full directory traversal is not possible in this session
───
In short: I got lucky with a well-informed guess. The README.md heuristic worked. Without it, I would have had no path forward.
First, I'm really thankyou about your feature request and making it by program code so fast!!
Here is what I've tested.
Openclaw's Log