CAUTION version 1.0.0 · audited 2026-09-17
This skill is a web-search tool. It installs and uses a third-party Python package to query DuckDuckGo for web, news, image, and video results, then prints the results as text, Markdown, or JSON or saves them to a file. It does not access credentials, payments, or persistence features. The main cautions are the unpinned dependency install and the ability to write result files to arbitrary local paths. No hidden network destinations, obfuscated code, or download-and-execute behavior were found.
Instructions try to steer the agent beyond the declared purpose. The tool returns arbitrary external web page titles and body/description text verbatim (scripts/search.py lines 206-208 and 219-228). This output is untrusted content and could include prompt-injection instructions if the agent later reads or acts on the search results. No package file itself contains hidden instructions targeting the agent.
| Declared purpose | Search the web using DuckDuckGo's API to find information across web pages, news articles, images, and videos, returning results in text, Markdown, or JSON (SKILL.md line 10). |
| Observed behavior | The Python script imports duckduckgo_search, sends query and filter parameters to DuckDuckGo through DDGS methods, formats returned results, prints them to stdout, and optionally writes them to a user-supplied file path when --output is used. |
| Verdict, rules only | SAFE |
| Verdict, AI | CAUTION |
| Final verdict | CAUTION (never better than either pass) |
| capability | vs purpose | detail |
|---|---|---|
| network | needed | The script calls DDGS text, news, images, and videos methods, which make outbound requests to DuckDuckGo (scripts/search.py lines 66-73, 97-104, 135-145, 171-178). |
| shell | needed | SKILL.md instructs the agent to run shell commands such as pip install duckduckgo-search and python scripts/search.py "<query>" (SKILL.md lines 28-29 and 41). |
| filesystem_write | needed | When --output is supplied, the script creates parent directories and writes the search results to the chosen path (scripts/search.py lines 565-567). |
| install_packages | needed | SKILL.md directs the user or agent to run pip install duckduckgo-search without a pinned version or checksum (SKILL.md line 29). |
| severity | finding |
|---|---|
| medium | Unpinned third-party dependency The skill tells the agent to install a third-party package without pinning a version or checksum. This is a supply-chain review point, and the skill-card acknowledges it at skill-card.md line 28. SKILL.md:29 pip install duckduckgo-search |
| info | Outbound search requests The script sends the user-provided query to DuckDuckGo through the duckduckgo_search library. Search terms are exposed to an external service; skill-card.md line 24 warns not to search secrets or credentials. scripts/search.py:67 results = list(ddgs.text( |
| low | Creates local directories When --output is used, the script will create missing parent directories for the output file path. scripts/search.py:566 output_path.parent.mkdir(parents=True, exist_ok=True) |
| low | Writes local files When --output is used, the script writes search results to the path supplied by the caller. An agent that supplies an arbitrary path could create or overwrite local files. scripts/search.py:567 output_path.write_text(output, encoding='utf-8') |
| info | Publisher discloses dependency risk The skill card itself notes that the dependency is not version-pinned, supporting the need for review before installation. skill-card.md:28 Risk: The dependency installation command does not pin duckduckgo-search to a reviewed version. |
0 AI finding(s) were dropped because their file, line or quote did not match the package.
| domain | service rating | where |
|---|---|---|
| clawhub.ai | not in the service index | skill-card.md:9 |
| example.com | not in the service index | SKILL.md:281 |
| Binaries invoked | bash, pip, python, python3 |
| Environment variables read | none |
| Hard-coded wallets | none |
| Pipes a download to a shell | 0 |
| eval / exec / subprocess | 0 |
| base64 blobs | 0 |
| File writes | 11 |
| Persistence | 0 |
| file | lines | sha256 |
|---|---|---|
SKILL.md | 519 | c9dc9a11b8a2d3a2… |
_meta.json | 6 | 75a216cab75f9406… |
scripts/search.py | 576 | 2f52e5ad57b7b219… |
skill-card.md | 56 | 58f56f432b91aed1… |
For agents
JSON: https://agenteconomy.report/k/web-search.audit.json · badge: https://agenteconomy.report/k/web-search.audited.svg ·
skill rating: /k/web-search · commission an audit of any skill: US$ 29 per version.
The complete published package of this exact version was downloaded from the registry and read statically; nothing was executed. A deterministic pass extracts network destinations, binaries, environment variables, writes, install commands, obfuscation markers, subprocesses and wallets, each with file and line. An AI then reads the whole package with those facts and writes the summary, the capabilities and the findings under a strict schema; every finding it produces must cite a file, a line and the exact text, or it is dropped. The final verdict is the worst of the two passes. The audit does not change the skill's trust tier (policy); the author may respond through the dispute channel and the response is published here. Commissioned by: the Agent Economy Report (free program: the 150 most downloaded skills, September 2026).