Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

brave-shim

v1.0.0

Set up brave_shim as a free local proxy for OpenClaw web_search, routing Brave API requests to DuckDuckGo. Use when user asks to enable free web search, conf...

0· 73·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for weare20202020/brave-shim.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "brave-shim" (weare20202020/brave-shim) from ClawHub.
Skill page: https://clawhub.ai/weare20202020/brave-shim
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install brave-shim

ClawHub CLI

Package manager switcher

npx clawhub@latest install brave-shim
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The declared purpose (route Brave API calls to a local DuckDuckGo shim) matches the included scripts, but the patch script writes into OpenClaw's distribution folder (modifies other package files). The registry metadata did not declare any required config paths or file system access, yet the code expects to modify OpenClaw's install (hardcoded OPENCLAW_DIST = "F:\\npm\\node_modules\\openclaw\\dist"). Modifying another product's dist files is a significant capability that should be explicit.
!
Instruction Scope
SKILL.md instructs cloning an external repo, creating a venv, installing packages, running a local FastAPI server, and patching OpenClaw JS files. These instructions stay within the stated goal but require write access to the OpenClaw installation and restarting the gateway. The patching step could break integrity, is performed by scripts with filesystem writes, and the included patch script uses a hardcoded Windows path which may not match a user's environment.
Install Mechanism
There is no platform install spec in the registry, but the bundled setup script clones a GitHub repository (https://github.com/asoraruf/brave_shim) and pip-installs dependencies (fastapi, uvicorn, ddgs, pyyaml) into a venv. Cloning from GitHub is a common pattern and not inherently malicious, but it means arbitrary remote code will be downloaded and run locally — this is moderate risk and should be audited before execution.
Credentials
The skill requests no credentials or env vars in metadata, and the instructions only mention adjusting NO_PROXY if it blocks localhost. However, the code implicitly requires file-system access to the OpenClaw dist directory and permission to restart the gateway; these configuration/permission requirements are not declared. That mismatch reduces transparency.
!
Persistence & Privilege
always is false (good), but the skill's actions modify another package's distributed files (OpenClaw's provider JS). Changing files outside the skill's own directory is a cross-component modification and elevates privileges/impact — it can be persistent across restarts and updates and should be treated cautiously.
What to consider before installing
This skill will download code from a third‑party GitHub repo, install Python packages, and patch OpenClaw's distributed JS files to point Brave calls at a local server. Before installing, do the following: 1) Inspect the remote repository (https://github.com/asoraruf/brave_shim) and brave_shim.py to ensure it contains only the expected shim behavior; 2) Back up your OpenClaw installation (or test in an isolated VM/container) because the patch script overwrites files and contains a hardcoded Windows path that may not match your system; 3) Prefer official plugin/config options or ask the OpenClaw project for a supported approach if available; 4) Run the setup scripts only with least privilege, and avoid running them as admin/root until you verify the code; 5) If you proceed, consider editing scripts to point to the correct OpenClaw install path and to avoid running shell commands with unescaped inputs. If you want, I can: review the remote repo's brave_shim.py for risky behavior, show a safer patch plan that doesn't overwrite dist files, or produce containerized run instructions.

Like a lobster shell, security has layers — review code before you run it.

latestvk978pdvkpy2xg8ksf9b0kdmf91849hkz
73downloads
0stars
1versions
Updated 3w ago
v1.0.0
MIT-0

brave-shim

Local proxy that makes OpenClaw's Brave Search provider route to DuckDuckGo for free, without any API key.

How it works

  1. A Python FastAPI service (brave_shim) runs locally on http://127.0.0.1:8000
  2. It implements the Brave Search API format but fetches results from DuckDuckGo via ddgs
  3. OpenClaw's built-in Brave provider is redirected to this local service

Setup

1. Install brave_shim

# Clone the repo
git clone https://github.com/asoraruf/brave_shim <clone-path>

# Create venv and install dependencies
python -m venv <clone-path>/venv
# Windows:
<clone-path>\venv\Scripts\activate
pip install fastapi uvicorn ddgs pyyaml
# Linux/Mac:
source <clone-path>/venv/bin/activate
pip install fastapi uvicorn ddgs pyyaml

2. Patch OpenClaw Brave provider URL

The Brave provider in OpenClaw's bundled JS calls https://api.search.brave.com. Replace it with http://127.0.0.1:8000:

import subprocess, re, os

dist_dir = r"<openclaw-dist>"
pattern = r'(const BRAVE_SEARCH_ENDPOINT|const BRAVE_LLM_CONTEXT_ENDPOINT) = "[^"]+"'
replacement = {
    "const BRAVE_SEARCH_ENDPOINT": 'const BRAVE_SEARCH_ENDPOINT = "http://127.0.0.1:8000/res/v1/web/search"',
    "const BRAVE_LLM_CONTEXT_ENDPOINT": 'const BRAVE_LLM_CONTEXT_ENDPOINT = "http://127.0.0.1:8000/res/v1/llm/context"',
}

for fname in os.listdir(dist_dir):
    if fname.startswith("brave-web-search-provider") and fname.endswith(".js"):
        fpath = os.path.join(dist_dir, fname)
        content = open(fpath).read()
        new_content = re.sub(pattern, lambda m: replacement.get(m.group(1), m.group(0)), content)
        open(fpath, "w").write(new_content)

3. Configure OpenClaw

# Enable brave plugin (disabled by default)
openclaw config set plugins.entries.brave.enabled true

# Set Brave as search provider
openclaw config set tools.web.search.provider brave

# Restart gateway
openclaw gateway restart

4. Start shim service

# From brave_shim directory
.\venv\Scripts\python brave_shim.py
# Keep running in background

5. Verify

curl "http://127.0.0.1:8000/res/v1/web/search?q=hello+world"
# Should return JSON with web results

openclaw
# Then test: web_search { query: "test" }

Scripts

  • scripts/setup_brave_shim.py — Automated install: clone, venv, pip install
  • scripts/patch_openclaw.py — Patch OpenClaw dist JS files to redirect Brave API
  • scripts/start_shim.py — Start brave_shim service

Troubleshooting

"fetch failed" after setup:

  • Check shim is running: Invoke-WebRequest http://127.0.0.1:8000/res/v1/web/search?q=test
  • If shim is DOWN: re-run python brave_shim.py
  • If NO_PROXY blocks localhost: remove from env or set NO_PROXY=localhost,127.0.0.1

"missing_brave_api_key" error:

  • plugins.entries.brave needs enabled: true — run openclaw config set plugins.entries.brave.enabled true

"missing_gemini_api_key" instead:

  • Brave plugin still not enabled — check openclaw doctor for disabled plugin warnings

Comments

Loading comments...