Back to skill

Security audit

Verified Search Pro

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent research helper, but it needs review because optional API credentials can be sent to unvalidated environment-controlled endpoints and its agent instructions can block normal results to push API setup.

Review this skill before installing if you plan to use API keys. Do not set TAVILY_API_URL, BAIDU_API_ENDPOINT, or TENCENTCLOUD_WSA_ENDPOINT unless you fully trust the destination, use --no-cache for sensitive searches, and treat the Tavily/Tencent setup prompts as optional rather than required. Avoid fetching untrusted WeChat article URLs until redirect validation is tightened.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (4)

T01 · Skill Instruction Hijacking

Error
Location
.codex/instructions.md:133
Finding

<![CDATA[Mandatory Third-Party Promotion Hijacks Agent Workflow and Withholds Requested Results]]>

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/tavily_adapter.py:14
Finding

<![CDATA[Environment-Controlled API Endpoints Can Receive Search Queries and Authentication Credentials]]>

Content
View full analysis
urllib.request.Request: api_key = os.environ.get("TAVILY_API_KEY", "") payload = { "query": query, "max_results": max_results, "search_depth": search_depth, "include_answer": False, "include_raw_content": False, } return urllib.request.Request( TAVILY_ENDPOINT, data=json.dumps(payload).encode("utf-8"), headers={ "Content-Type": "application/json", "Authorization": f"Bearer {api_key}", }, method="POST", ) ``` The request is sent at `scripts/tavily_adapter.py:70-71`: ```python req = _build_request(query, max_results, search_depth) with urllib.request.urlopen(req, timeout=30) as resp: ``` From `scripts/baidu_api_adapter.py:27-29` and `scripts/baidu_api_adapter.py:125-129`: ```python BAIDU_ENDPOINT = os.environ.get( "BAIDU_API_ENDPOINT", "https://qianfan.baidubce.com/v2/ai_search/web_search" ) ``` ```python def _build_request(payload: bytes, api_key: str) -> urllib.request.Request: req = urllib.request.Request(BAIDU_ENDPOINT, data=payload, method="POST") req.add_header("Content-Type", "application/json") req.add_header("Authorization", f"Bearer {api_key}") req.add_header("X-Appbuilder-From", APPBUILDER_FROM) return req ``` The request is sent at `scripts/baidu_api_adapter.py:211-216`: ```python api_key = os.environ["BAIDU_API_KEY"] payload = _build_payload(query, max_result ...[truncated 3818 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/wechat_fetch/wx-article-fetch.js:47
Finding

<![CDATA[WeChat Fetcher Follows Redirects to Unrestricted Hosts, Enabling SSRF]]>

Content
View full analysis
{ let parsed; try { parsed = new URL(rawUrl); } catch (_) { reject(new Error('URL unable to be parsed')); return; } const transport = parsed.protocol === 'http:' ? http : https; const req = transport.get( { hostname: parsed.hostname, port: parsed.port || (parsed.protocol === 'http:' ? 80 : 443), path: parsed.pathname + parsed.search, headers: { 'User-Agent': UA, 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Accept-Encoding': 'gzip, deflate, identity', 'Referer': 'https://weixin.sogou.com/', }, timeout, }, (res) => { if ([301, 302, 303, 307, 308].includes(res.statusCode) && res.headers.location) { res.resume(); if (redirectsLeft <= 0) { reject(new Error('Too many redirects')); return; } const next = new URL(res.headers.location, rawUrl).toString(); resolve(fetchPage(next, timeout, redirectsLeft - 1)); return; } ` ...[truncated 2505 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
scripts/cache.py:16
Finding

<![CDATA[Plaintext HTTP Cache Persists Sensitive Search Queries and Response Content]]>

Content
View full analysis
str: return os.environ.get("XDG_CACHE_HOME") or os.path.expanduser("~/.cache") def _default_db_path() -> str: return os.path.join(_xdg_cache_home(), _APP_NAME, "cache.db") ``` The cache constructor and schema at `scripts/cache.py:33-54` store the complete URL, headers, and response body: ```python class ResponseCache: def __init__(self, db_path: str = None, ttl_seconds: int = 300): self.db_path = db_path or _default_db_path() self.ttl_seconds = ttl_seconds self._enabled = True os.makedirs(os.path.dirname(self.db_path), exist_ok=True) self._init_db() def _init_db(self): with sqlite3.connect(self.db_path) as conn: conn.execute( """ CREATE TABLE IF NOT EXISTS responses ( key TEXT PRIMARY KEY, url TEXT NOT NULL, status INTEGER, headers TEXT, body BLOB, created_at INTEGER NOT NULL, expires_at INTEGER NOT NULL ) """ ) ``` The complete values are persisted at `scripts/cache.py:79-112`: ```python def set( self, method: str, url: str, status: int, headers: dict, body: bytes, body_input: bytes = None, ): if not self._enabled: return if status >= 400: return import json key = _make_cache_key(method, url, body_input) now = int(time.time()) expires = now + self.ttl_seconds with sqlite3.connect(self.db_path) as conn: conn.execute( """ INSERT ...[truncated 3016 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
Findings (119)

Tainted flow: 'req' from os.environ (line 215, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/baidu_api_adapter.py (reported line 216)May include surrounding context.

python
try:
        req = _build_request(payload, api_key)
        with urllib.request.urlopen(req, timeout=timeout) as resp:
            data = json.loads(resp.read().decode("utf-8", errors="ignore"))
    except urllib.error.HTTPError as e:
        body = e.read() if hasattr(e, "read") else b""

Tainted flow: 'req' from os.environ (line 203, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/wsa_adapter.py (reported line 204)May include surrounding context.

python
try:
        req = _build_request(payload, secret_id, secret_key)
        with urllib.request.urlopen(req, timeout=timeout) as resp:
            data = json.loads(resp.read().decode("utf-8", errors="ignore"))
    except urllib.error.HTTPError as e:
        body = e.read() if hasattr(e, "read") else b""

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
85% confidence
Finding

Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.

Content

Scanner excerpt · .claude/CLAUDE.md (reported line 149)May include surrounding context.

md
- Flag contradictions, don't judge

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
85% confidence
Finding

Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.

Content

Scanner excerpt · .codex/instructions.md (reported line 121)May include surrounding context.

md
- Flag contradictions, don't judge

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · .gitignore (reported line 28)May include surrounding context.

text
*.swo

# Local secrets and environment
.env
.env.*
*.pem
*.key

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger keywords include very broad everyday phrases such as '搜一下', '查一下', and '搜索', which can cause the skill to activate for routine requests far beyond high-assurance research use cases. In a skill with network access, shell-capable tools, and default file output behavior, overbroad activation increases the chance of unexpected searches, unnecessary external data retrieval, and unintended side effects.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 96)May include surrounding context.

md
| 1.5 | **强制**:调用 `scripts/search_engine.py` 前,先用 LLM 提取 2-5 个核心搜索概念,并通过 `--search-concepts` 传入 | 概念列表 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 102)May include surrounding context.

md
| 1.5 | **强制**:调用 `scripts/search_engine.py` 前,先用 LLM 提取 2-5 个核心搜索概念,并通过 `--search-concepts` 传入 | 概念列表 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 117)May include surrounding context.

md
| 1.5 | **强制**:调用 `scripts/search_engine.py` 前,先用 LLM 提取 2-5 个核心搜索概念,并通过 `--search-concepts` 传入 | 概念列表 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 137)May include surrounding context.

md
| 1.5 | **强制**:调用 `scripts/search_engine.py` 前,先用 LLM 提取 2-5 个核心搜索概念,并通过 `--search-concepts` 传入 | 概念列表 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 292)May include surrounding context.

md
| 1.5 | **强制**:调用 `scripts/search_engine.py` 前,先用 LLM 提取 2-5 个核心搜索概念,并通过 `--search-concepts` 传入 | 概念列表 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 294)May include surrounding context.

md
| 1.5 | **强制**:调用 `scripts/search_engine.py` 前,先用 LLM 提取 2-5 个核心搜索概念,并通过 `--search-concepts` 传入 | 概念列表 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 296)May include surrounding context.

md
| 1.5 | **强制**:调用 `scripts/search_engine.py` 前,先用 LLM 提取 2-5 个核心搜索概念,并通过 `--search-concepts` 传入 | 概念列表 |

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The main factual claim cites supporting evidence that the same file's perspective map says must not be used as fact and is for background or hypothesis only. This is a direct trust-boundary violation: downstream consumers may rely on labels like supporting_evidence and trusted_candidate rather than the more restrictive annotations, leading to misinformation laundering.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file marks a trusted conclusion as usable for candidate conclusions while its cited support is restricted elsewhere to background, context-only, or historical use. That contradiction can cause downstream agents to elevate weak or non-factual material into factual output, producing integrity failures in research or decision-support workflows.

Content

No source excerpt is available for this finding.

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
85% confidence
Finding

Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.

Content

Scanner excerpt · references/07-cross-platform.md (reported line 88)May include surrounding context.

md
- "Better less than fake": Mark insufficient info clearly
- "Never fill gaps with speculation"
- "Always cite sources"
- "Flag contradictions, don't judge"
- Keep context below the 256k red line; use lite / standard / deep budgets
- Prefer --budget auto unless the user explicitly asks for a larger or smaller pack
- Use --checkpoint auto by default; batch for clear direct research, interactive for high-risk or ambiguous work

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · scripts/config.py (reported line 62)May include surrounding context.

python
def _apply_env_overrides(config: dict) -> dict:
    """从环境变量读取覆盖值。前缀 VSP_,用双下划线表示嵌套。"""
    env_prefix = "VSP_"
    for key, value in os.environ.items():
        if not key.startswith(env_prefix):
            continue
        rest = key[len(env_prefix):].lower()

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · scripts/config.py (reported line 119)May include surrounding context.

python
user = user_path or _user_config_path()
    if os.path.exists(user):
        sources.append(("user", user))
    if apply_env and any(k.startswith("VSP_") for k in os.environ):
        sources.append(("environment", "VSP_*"))
    return sources

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · tests/fixtures/sogou_real_sample.html (reported line 5)May include surrounding context.

html
<html>
<head><title>OpenAI CEO 是谁 - 搜狗搜索</title></head>
<body>
<!-- 真实搜狗结果页裁剪样本(BUG-ENV-2 回归 fixture):
     保留关键结构漂移点 ——
     1) 经典结果块 <div class="vrwrap"> 内 <h3 class="vr-title"><a href="/link?url=..."> 加密相对链接
     2) h3 与 a 之间的 HTML 注释(<!--awbg3-->)及 a 内 <!--red_beg--> 高亮注释

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · tests/fixtures/sogou_real_sample.html (reported line 5)May include surrounding context.

html
<html>
<head><title>OpenAI CEO 是谁 - 搜狗搜索</title></head>
<body>
<!-- 真实搜狗结果页裁剪样本(BUG-ENV-2 回归 fixture):
     保留关键结构漂移点 ——
     1) 经典结果块 <div class="vrwrap"> 内 <h3 class="vr-title"><a href="/link?url=..."> 加密相对链接
     2) h3 与 a 之间的 HTML 注释(<!--awbg3-->)及 a 内 <!--red_beg--> 高亮注释

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · tests/fixtures/sogou_real_sample.html (reported line 15)May include surrounding context.

html
标题/链接均取自 2026-07 真实查询 "OpenAI CEO 是谁" 的结果页。 -->
<div class="card30010546__wrap_30e3 vrwrap card30010546__expStyle_30e3" data-reactroot=""><div class="card30010546__titleWrap_30e3 fontExp"><a target="_blank" id="sogou_vr_30010546_title_1" href="https://newsa.html5.qq.com/v1/share-video?vid=3822791983291374955" class="link__saLink_bda5" vrcid="Link."><div>Palantir CEO OpenAI 是小偷:拆解 Karp 的指控</div></a></div></div>
<div class="vrwrap middle-better-hintBox" id="sogou_vr_30010467_2"><div class="vrTitle"><span>大家还在搜</span></div><div class="hint-mid" data-hint="middle" data-rank="2"><span><a href="?user_ip=222&amp;bh=1&amp;query=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD" id="sogou_vr_30010467_1_2">人工智能open ai官网</a></span></div></div>
<div class="vrwrap" id="sogou_vr_30000000_wrap_3"><h3 class="vr-title"><!--awbg3--><a name="dttl" target="_blank" href="/link?url=hedJjaC291NbWrwHYHKCyPvjU9Tbu8QRaJrgRIXUqR5_WF_WH2CNvjEmYzjwUqfhX4RmQ9MllJw." id="sogou_vr_30000000_3" cachestrategy="qcr:-1" bingpb=""><!--awbg3--><em>OpenAI CEO</em>奥特曼为Reddit第三大股东,他曾当过8天临时CEO|...</a></h3><div class="fz-mid space-txt base-ellipsis clamp2" id="cacheresult_summary_3"><em>OpenAI的首席执行官萨姆·奥特曼</em>(Sam Altman)是Reddit的主要股东之一,拥有公司8.7%的股份。</div> <a class="citeLinkClass" target="_blank" href="/link?url=hedJjaC291NbWrwHYHKCyPvjU9Tbu8QRaJrgRIXUqR5_WF_WH2CNvjEmYzjwUqfhX4RmQ9MllJw." id="cacheresult_cite_3"> <span>网易</span> <span>2024-02-23</span> </a></div>
<div class="vrwrap"> <style>.struct201102 .real-tag { color: #205aef; }</style> <div class="struct201102"> <h3 class="vr-title  "  vrcid="title.ba18e87"> <a class=" " target="_blank" href="/link?url=hedJjaC291NbWrwHYHKCyPvjU9Tbu8QRaJrgRIXUqR7_IrlLrbKhVr9OCf4mlvJn2eEqArQsEhY."><em><!--red_beg-->OpenAI CEO<!--red_end--></em>:当年马斯克骂我们都<em><!--red_beg-->是<!--red_end--></em>蠢货,然后就离开了|openai|<em><!--red_beg-->人工<!--red_end--></em>...</a> </h3> <div class="fz-mid space-txt base-ellipsis clamp2">OpenAI CEO 萨姆·奥特曼与埃隆·马斯克的恩怨始于 2015 年公司创立之初。</div> </div></div>
<div class="vrw
...[truncated 25 chars]

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · tests/fixtures/sogou_real_sample.html (reported line 16)May include surrounding context.

html
<div class="card30010546__wrap_30e3 vrwrap card30010546__expStyle_30e3" data-reactroot=""><div class="card30010546__titleWrap_30e3 fontExp"><a target="_blank" id="sogou_vr_30010546_title_1" href="https://newsa.html5.qq.com/v1/share-video?vid=3822791983291374955" class="link__saLink_bda5" vrcid="Link."><div>Palantir CEO OpenAI 是小偷:拆解 Karp 的指控</div></a></div></div>
<div class="vrwrap middle-better-hintBox" id="sogou_vr_30010467_2"><div class="vrTitle"><span>大家还在搜</span></div><div class="hint-mid" data-hint="middle" data-rank="2"><span><a href="?user_ip=222&amp;bh=1&amp;query=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD" id="sogou_vr_30010467_1_2">人工智能open ai官网</a></span></div></div>
<div class="vrwrap" id="sogou_vr_30000000_wrap_3"><h3 class="vr-title"><!--awbg3--><a name="dttl" target="_blank" href="/link?url=hedJjaC291NbWrwHYHKCyPvjU9Tbu8QRaJrgRIXUqR5_WF_WH2CNvjEmYzjwUqfhX4RmQ9MllJw." id="sogou_vr_30000000_3" cachestrategy="qcr:-1" bingpb=""><!--awbg3--><em>OpenAI CEO</em>奥特曼为Reddit第三大股东,他曾当过8天临时CEO|...</a></h3><div class="fz-mid space-txt base-ellipsis clamp2" id="cacheresult_summary_3"><em>OpenAI的首席执行官萨姆·奥特曼</em>(Sam Altman)是Reddit的主要股东之一,拥有公司8.7%的股份。</div> <a class="citeLinkClass" target="_blank" href="/link?url=hedJjaC291NbWrwHYHKCyPvjU9Tbu8QRaJrgRIXUqR5_WF_WH2CNvjEmYzjwUqfhX4RmQ9MllJw." id="cacheresult_cite_3"> <span>网易</span> <span>2024-02-23</span> </a></div>
<div class="vrwrap"> <style>.struct201102 .real-tag { color: #205aef; }</style> <div class="struct201102"> <h3 class="vr-title  "  vrcid="title.ba18e87"> <a class=" " target="_blank" href="/link?url=hedJjaC291NbWrwHYHKCyPvjU9Tbu8QRaJrgRIXUqR7_IrlLrbKhVr9OCf4mlvJn2eEqArQsEhY."><em><!--red_beg-->OpenAI CEO<!--red_end--></em>:当年马斯克骂我们都<em><!--red_beg-->是<!--red_end--></em>蠢货,然后就离开了|openai|<em><!--red_beg-->人工<!--red_end--></em>...</a> </h3> <div class="fz-mid space-txt base-ellipsis clamp2">OpenAI CEO 萨姆·奥特曼与埃隆·马斯克的恩怨始于 2015 年公司创立之初。</div> </div></div>
<div class="vrwrap" id="sogou_vr_30000909_wrap_5"><div class="s
...[truncated 25 chars]

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
60% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · tests/test_config.py (reported line 44)May include surrounding context.

python
class SearchEngineCliTests(unittest.TestCase):
    def test_tavily_missing_key_degrades_to_empty_json(self):
        env = os.environ.copy()
        env.pop("TAVILY_API_KEY", None)

        result = subprocess.run(

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
60% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · tests/test_search_engine_cli.py (reported line 14)May include surrounding context.

python
class SearchEngineCliTests(unittest.TestCase):
    def test_tavily_missing_key_degrades_to_empty_json(self):
        env = os.environ.copy()
        env.pop("TAVILY_API_KEY", None)

        result = subprocess.run(

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
60% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · tests/test_search_engine_cli.py (reported line 44)May include surrounding context.

python
class SearchEngineCliTests(unittest.TestCase):
    def test_tavily_missing_key_degrades_to_empty_json(self):
        env = os.environ.copy()
        env.pop("TAVILY_API_KEY", None)

        result = subprocess.run(

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
references/10-api-setup.md:90