Back to skill

Security audit

Tavily Best Practices

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Tavily integration guide; it involves normal third-party API, package-install, and API-key setup risks but does not show hidden or purpose-mismatched behavior.

Install this as a Tavily reference skill only if you are comfortable using Tavily and related SDKs. Avoid sending secrets, private/internal URLs, regulated data, or proprietary documents through search, extract, crawl, research, or LLM-verification examples unless your organization has approved that data flow. For production, use a virtual environment, pin package versions, and store API keys through your normal secrets-management process.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:25
Finding
Unpinned Third-Party Dependency Installation## Vulnerability Details **File Locations**: - `SKILL.md:25-34` - `references/sdk.md:14-17` - `references/sdk.md:144-147` - `references/integrations.md:19-22` - `references/integrations.md:263-266` - `references/integrations.md:309-312` **Vulnerability Type**: Unpinned and unverifiable third-party dependencies **Risk Level**: Medium ### Vulnerable Code `SKILL.md:25-34`: ```markdown ## Installation **Python:** ```bash pip install tavily-python ``` **JavaScript:** ```bash npm install @tavily/core ``` ``` `references/sdk.md:14-17`: ```markdown ### Installation ```bash pip install tavily-python ``` ``` `references/sdk.md:144-147`: ```markdown ### Installation ```bash npm install @tavily/core ``` ``` `references/integrations.md:19-22`: ```markdown ### Installation ```bash pip install -U langchain-tavily ``` ``` `references/integrations.md:263-266`: ```markdown ### Installation ```bash npm install ai @ai-sdk/openai @tavily/ai-sdk ``` ``` `references/integrations.md:309-312`: ```markdown ### Installation ```bash pip install 'crewai[tools]' ``` ``` ### Technical Analysis The documented installation commands retrieve mutable package versions from public package registries without exact version pins, lockfiles, package hashes, or integrity verification. Consequently, the code installed by a user may differ from the code reviewed when this Skill was published. Python and Node.js package installation can execute package-controlled build or installation logic. Runtime imports subsequently execute package code inside the integrating application. The `pip install -U langchain-tavily` instruction is particularly exposed because `-U` explicitly replaces an existing installation with the newest available compatible release. No evidence indicates that the currently named packages are malicious. The confirmed weakness is that the instructi ...[truncated 1820 chars]
Remediation
## Remediation Suggestions 1. Replace unconstrained dependency commands with exact, reviewed versions, for example: ```bash pip install tavily-python==REVIEWED_VERSION npm install @tavily/core@REVIEWED_VERSION --save-exact ``` 2. Remove unconditional upgrade behavior such as `pip install -U` from standard setup instructions. Upgrades should be deliberate and reviewed. 3. Provide reproducible dependency metadata: - Use a Python lockfile or a fully pinned requirements file. - Use `package-lock.json`, `npm-shrinkwrap.json`, or an equivalent JavaScript lockfile. - Pin relevant transitive dependencies where the selected ecosystem tooling supports it. 4. Add integrity verification: - Publish Python requirements with hashes and install using `pip install --require-hashes`. - Commit and enforce npm lockfile integrity metadata. - Use only trusted package registries and document approved registry configuration. 5. Run dependency vulnerability and provenance checks in CI, such as package auditing, lockfile review, and publisher or signature verification where available. 6. Recommend installation inside an isolated virtual environment or container under a non-privileged account. Avoid installing dependencies as root or in a broadly privileged CI/CD context. 7. Establish a controlled update process in which dependency changes are reviewed, scanned, tested, and explicitly approved before users are instructed to adopt them.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (5)

Agent Config Directory Access

High
Category
Agent Snooping
Content
**Tavily API Key Required** - Get your key at https://app.tavily.com (1,000 free API credits/month, no credit card required)

Add to `~/.claude/settings.json`:
```json
{
  "env": {
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
This markdown file includes examples that retrieve `raw_content` from external pages and later process extracted content, but it does not warn users that extracted material may contain sensitive, copyrighted, or privacy-impacting data. For markdown files, SQP-2 applies when the skill description omits warnings about behaviors that could affect user data or privacy.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The documentation promotes `extract()`, `crawl()`, and related features that send user-supplied URLs, page content, and crawl instructions to a third-party service, but it does not warn developers about privacy, compliance, or data-retention implications. In an agentic/RAG context, this omission can lead integrators to forward internal URLs, sensitive documents, or proprietary content to an external provider without informed consent or filtering.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The documentation encourages sending user queries and potentially retrieved web content to Tavily, but it does not mention any privacy, consent, or data-handling implications. In agentic, RAG, or autonomous workflows, developers may pass sensitive prompts, identifiers, or internal research terms to external services without realizing this creates a third-party data disclosure risk.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The LLM verification example forwards URL, title, and content from search results to an OpenAI model for semantic validation, but it does not warn that retrieved page content is being sent to a second external provider. This increases the risk of unintended disclosure of sensitive, proprietary, personal, or copyrighted material, especially because the skill is aimed at coding assistants building automated pipelines at scale.