Auto Research

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill mostly does the advertised research workflow, but it also uses local auth/secrets, sends briefing content to OpenAI, and creates or runs helper code outside the skill directory without clear disclosure.

Install only if you are comfortable configuring and auditing its external services. Before use, set your own BRAVE_API_KEY, OPENAI_API_KEY, QDRANT_URL, REDIS settings, and OBSIDIAN_VAULT; verify that no unexpected auth profiles or secrets helpers are being read; and review or remove the hardcoded /Users/gregborden helper path.

Findings (6)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A research run may use the user's OpenAI account and quota without the user explicitly providing a key for this skill.

Why it was flagged

If OPENAI_API_KEY is not set, the skill reads the user's local OpenClaw auth profile to obtain an OpenAI API key. This credential use is not declared in the registry metadata or SKILL.md environment variable table.

Skill content
AUTH_FILE="$HOME/.openclaw/agents/main/agent/auth-profiles.json" ... OPENAI_API_KEY=$(jq -r '.["openai:default"].apiKey // empty' "$AUTH_FILE" ...)
Recommendation

Declare OpenAI as a required or optional credential, require explicit user configuration or consent, and avoid reading agent auth profiles silently.

What this means

Research topics, summaries, and source text may leave the local machine and be processed by OpenAI during vectorization.

Why it was flagged

The vectorizer reads the generated briefing file and sends chunks to OpenAI's embeddings API, while the user-facing docs mainly describe Qdrant vectorization and do not clearly identify OpenAI as an external data processor.

Skill content
with open(file_path, 'r') as f:
        content = f.read()
...
response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text[:8000]
Recommendation

Clearly disclose external embedding providers, add an opt-in or disable switch for vectorization, and document what content is sent.

What this means

The skill can modify the local OpenClaw workspace and run code outside the reviewed skill package, making behavior harder to audit or remove.

Why it was flagged

The skill creates an executable Python helper in a hardcoded path outside the skill directory and then runs it. If that file already exists, it executes the external file instead of a manifest-contained helper.

Skill content
INGEST_TOOL="/Users/gregborden/.openclaw/workspace/tools/research-ingest.py" ... cat > "$INGEST_TOOL" << 'INGEST_EOF' ... chmod +x "$INGEST_TOOL" ... python3 "$INGEST_TOOL"
Recommendation

Keep helper code inside the skill directory, include it in the manifest, avoid hardcoded user paths, and verify or prompt before creating executable files.

What this means

Running the cache path may execute local code that the skill package does not include or document, and may access Redis credentials unexpectedly.

Why it was flagged

The cache script automatically invokes an unprovided ../../tools/secrets.py helper to retrieve a Redis password. That helper is not in the manifest, so its provenance and behavior are outside the reviewed artifacts.

Skill content
REDIS_PASSWORD="${REDIS_PASSWORD:-$(python3 "$(dirname "$0")/../../tools/secrets.py" get REDIS_PASSWORD 2>/dev/null)}"
Recommendation

Remove automatic execution of unmanifested helpers, or declare and include the helper with clear credential-handling documentation.

What this means

Research content and potentially sensitive research interests may remain searchable later, and untrusted web snippets could be reused as context.

Why it was flagged

The skill stores research chunks, topics, file paths, and source metadata in Qdrant for later semantic retrieval. This is aligned with the stated feature, but it creates persistent agent memory from web-derived content.

Skill content
"payload": {
                "topic": topic,
                "chunk_index": i,
                "text": chunk[:2000],
                **metadata
            }
Recommendation

Configure Qdrant deliberately, add retention/deletion guidance, namespace collections per user or project, and treat retrieved web research as untrusted context.

What this means

Searches may be associated with a shared API credential rather than the user's own configured key.

Why it was flagged

The search script contains a built-in Brave Search API key. Web search is central to the skill and SKILL.md mentions a built-in key, but a shared embedded credential is still noteworthy.

Skill content
BRAVE_API_KEY="${BRAVE_API_KEY:-BSAfZrm_28TmR5FM9FhMCrTA1A3zS2n}"
Recommendation

Prefer requiring the user to provide their own Brave API key, or clearly explain the privacy and quota implications of the built-in key.