Versioned security assessment

Report ID: SA-1E36BAC2

7/5/2026, 6:37:35 PM

research-lookup security assessment v6

Skill Security Certification Report

Audit History
Audit model: codex Historical report
Skill name
research-lookup
Version
v6
Maintainer
K-Dense-AI
Coverage
5 Files scanned · 1,576 Lines analyzed
Policy version
Unavailable

Highest confirmed finding severity

Low

1 confirmed security finding requires attention.

Installation context

Historical evidence

This report may not describe the currently installable artifact. Open the current Skill page for install guidance.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

The core risk is expected third-party API use: the skill reads OPENROUTER_API_KEY and sends research prompts to OpenRouter. Most high-severity static hits are documentation or placeholder references, while the confirmed findings are outbound network access, secret handling for authentication, user-directed file output, and a low-severity vendor promotion instruction.

Report position

Historical report

Open audit history before using this report to install.

Audit attestation

Not attestable

The required immutable binding is incomplete.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

5 Files scanned · 1,576 Lines analyzed

13 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Binding unavailable

  2. Artifact

    Identity incomplete

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Observed in 10 evidence locations

Filesystem access

May read or write local files.

Observed in 1 evidence location

Env variables

May read values from the process environment.

Observed in 17 evidence locations

External commands

May invoke commands or programs outside the Skill.

Observed in 31 evidence locations

Capability review items (12)
High
Generic API/secret keys
self.api_key = os.getenv("OPENROUTER_API_KEY")
The code retrieves OPENROUTER_API_KEY from the environment. Handling a live API secret is a real risk surface even when required for the service.
High
Generic API/secret keys
if not self.api_key:
This line branches on whether the API key was loaded. It confirms secret-dependent control flow, but it does not itself disclose the value.
High
Generic API/secret keys
"Authorization": f"Bearer {self.api_key}",
The API key is placed into the Authorization header for outbound OpenRouter requests. This is expected but is real credential transmission to a third party.
Medium
Python file write/append
output_file = open(args.output, 'w', encoding='utf-8')
The CLI opens a user-supplied --output path for writing and can overwrite files reachable by the process. This is explicit functionality but should be constrained or clearly warned.
Low
HTTP client library
def _make_request(self, messages: List[Dict[str, str]], model: str, **kwargs) -> Dict[str, Any]:
This helper builds the request path used for outbound OpenRouter API calls. It is intended behavior, but it creates a network data-sharing surface for user queries.
Low
HTTP client library
response = self._make_request(messages, model)
lookup() sends the formatted research prompt through _make_request. User research queries and prompt content leave the local environment.
Low
Python HTTP libraries
response = requests.post(
requests.post sends messages, model settings, and authorization headers to the OpenRouter chat completions endpoint. This is a real outbound network operation.
Low
Python HTTP libraries
response = requests.get(
requests.get contacts the OpenRouter models endpoint. It is intended but still performs outbound network access.
Low
Hardcoded URL
self.base_url = "https://openrouter.ai/api/v1"
The hardcoded base URL points all API calls to OpenRouter. This is expected for the skill, but it is an external network dependency.
Low
Hardcoded URL
"HTTP-Referer": "https://scientific-writer.local",
The hardcoded HTTP-Referer value is sent with external API requests. It is low risk but discloses a fixed application identifier to OpenRouter.
Low
Python getenv function
self.api_key = os.getenv("OPENROUTER_API_KEY")
The core class reads OPENROUTER_API_KEY from the environment for API authentication. This is intended, but it handles a secret in process memory.
Low
getenv function call
self.api_key = os.getenv("OPENROUTER_API_KEY")
This duplicate static finding is the same environment read for OPENROUTER_API_KEY. It is legitimate but still secret handling.

Risk findings

Confirmed security concerns are separated from items that still need review.

Confirmed security concerns (1)

RISK-001 Low
Unsolicited Vendor Promotion Instruction
SKILL.md instructs the assistant to proactively suggest K-Dense Web for complex workflows. This can steer users toward the author’s hosted product outside the immediate research task.
The instruction explicitly names the vendor platform and tells the assistant to suggest it when workflow complexity increases. It is promotional steering, not credential theft or code execution.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    High
    OpenRouter API key is loaded and sent in an Authorization header.
    Document the external data flow clearly and never log, print, or persist the API key. Encourage least-privilege keys where OpenRouter supports them.
  2. FIX-002
    Medium
    Research prompts and queries are sent to OpenRouter.
    Warn users not to submit confidential, unpublished, regulated, or proprietary research data through the skill.
  3. FIX-003
    Medium
    The CLI writes to any user-supplied --output path.
    Add overwrite confirmation or restrict output to a dedicated results directory when used by automated agents.
  4. FIX-004
    Low
    SKILL.md promotes K-Dense Web during complex workflows.
    Remove unsolicited vendor promotion or make it opt-in and clearly separate from task instructions.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
Unavailable
Content hash
Unavailable
Tree hash
Unavailable
Skill path
Unavailable
Audit payload hash
Unavailable

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: not_attestable