Back to skill

Security audit

跨境电商评论分析 · 多站点消费者洞察

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed ARI review-analysis tool, but it can spend credits automatically and change ongoing confirmation or monitoring settings, so users should review it before installing.

Install only if you trust ARI with the relevant Amazon review and account data, understand that some report generation can consume credits automatically under account auto-confirm rules, and are comfortable with a local API key being stored on the machine. Consider setting auto-confirm off before use and avoid custom ARI_BASE_URL values unless they are HTTPS endpoints you control.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/ari.py:55
Finding
Bearer API Key Can Be Transmitted to a Custom Plaintext HTTP Endpoint<![CDATA[ ## Vulnerability Details **File Location**: `scripts/ari.py:55-71` and `scripts/ari.py:300-320` **Vulnerability Type**: Sensitive credential transmission over an unencrypted connection **Risk Level**: Medium ### Vulnerable Code Custom API endpoints are accepted without validating that the URL uses HTTPS: ```python def base_url(): """API 基址。ARI_BASE_URL 覆盖必须同时显式设置 ARI_ALLOW_CUSTOM_BASE=1 才生效: 所有请求(含带 Bearer Key 的)都发往这里,若单凭一个环境变量就能改指向, 会话里被注入的一条 shell 命令就足以把 Key 重定向到第三方主机。双变量门槛 让「指向哪」与「我确认这是自己的环境」成为两个独立动作。 """ override = (os.environ.get("ARI_BASE_URL") or "").strip().rstrip("/") if not override or override == PROD_BASE: return PROD_BASE if (os.environ.get("ARI_ALLOW_CUSTOM_BASE") or "").strip() != "1": emit(error_obj( "ARI_CUSTOM_BASE_BLOCKED", 0, "ARI_BASE_URL 指向非官方地址:%s,已拒绝发送请求" % override, "若这是你自己的开发/自建环境,请同时设置 ARI_ALLOW_CUSTOM_BASE=1 后重试;" "若你并未主动设置过 ARI_BASE_URL,请勿继续,先清除该环境变量。")) raise SystemExit(2) return override ``` Authenticated requests then attach the reusable API key to the selected endpoint: ```python def request_json(method, path, payload=None, params=None): query = { "method": method, "path": path, "params": {k: v for k, v in (params or {}).items() if v not in (None, "")}, "payload": payload, } url = base_url() + path if query["params"]: url += "?" + urllib.parse.urlencode(query["params"], doseq=True) data = None if payload is None else json.dumps(payload).encode("utf-8") headers = { "Authorization": "Bearer " + require_key(), "Accept": "application/json", "User-Agent": user_agent(), } if data is not None: headers["Content-Type"] = "application/json" try: req = urllib.request.Request(url, data=data, headers=headers, method=method) with urllib.request.urlopen(req, timeout=TIMEOUT_SEC) as resp: ``` ### Tec ...[truncated 2569 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Require HTTPS for custom remote endpoints.** Parse the URL with `urllib.parse.urlparse` and reject any non-HTTPS scheme before returning it: ```python parsed = urllib.parse.urlparse(override) if parsed.scheme != "https" or not parsed.hostname: raise SystemExit("Custom ARI endpoints must use HTTPS") ``` 2. **Provide a narrowly scoped local-development exception.** If plaintext HTTP is necessary for development, allow it only for loopback destinations such as `127.0.0.1`, `::1`, or `localhost`, and require a separate explicit flag such as `ARI_ALLOW_INSECURE_LOCAL_HTTP=1`. 3. **Do not permit HTTP for arbitrary private-network hosts.** Private networks can still contain untrusted users, compromised routers, transparent proxies, and traffic-capture systems. 4. **Validate redirects.** Ensure authenticated requests cannot follow redirects from an approved HTTPS origin to HTTP or to an unapproved host while retaining the `Authorization` header. 5. **Use scoped and revocable credentials.** Where supported, issue custom or development endpoints separate API keys with minimum permissions, limited lifetime, and no billing authority. 6. **Document certificate configuration.** Support trusted private certificate authorities for self-hosted installations rather than recommending plaintext HTTP when standard public certificates are unavailable. 7. **Add regression tests** covering: - Rejection of arbitrary `http://` endpoints. - Acceptance of valid `https://` endpoints. - Optional loopback-only development behavior. - Rejection of malformed URLs and unsupported schemes. - Prevention of credential-bearing cross-origin or HTTPS-to-HTTP redirects. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (33)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill advertises no explicit permissions while instructing the agent to use shell, network access, environment variables, and local file writes, including storing API keys locally and exporting files. This creates hidden capability expansion: a reviewer or platform may not realize the skill can execute commands, persist secrets, and access external services, which materially increases security and privacy risk.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The skill’s declared purpose is limited to review comparison, but the instructions extend into account setup, billing management, recurring schedules, paid job submission, monitoring changes, local export, archived report retrieval, and account configuration changes. That mismatch is dangerous because users and policy systems may consent to a narrow analytics skill while the actual behavior can trigger purchases, persist credentials, change account settings, and manage ongoing automations.

Description-Behavior Mismatch

Medium
Confidence
84% confidence
Finding
The skill metadata describes cross-border review comparison, but this section implements broader product-operations workflows that can trigger additional paid analysis runs and business actions outside the advertised scope. In an agent setting, capability overreach increases the chance that a user or upstream orchestrator invokes unexpected actions, especially when combined with auto-confirm behavior elsewhere in the file.

Description-Behavior Mismatch

Medium
Confidence
80% confidence
Finding
The workbench and AI advice features manage review-processing state and generate paid advisory content, which materially exceeds a read-oriented cross-market review analysis scope. In a tool-using agent environment, hidden adjacent capabilities can lead to unintended state changes or paid actions that the user did not expect from this skill.

Vague Triggers

Medium
Confidence
86% confidence
Finding
The activation text mixes specific e-commerce use cases with broad topical phrases like localization, overseas market, Europe/Japan site comparison, and general cross-border analysis. Overbroad invocation scope can cause the skill to activate in conversations where the user did not intend paid review collection, external API access, or account-affecting operations.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
1. 运行 `check`,确认账户、邮箱验证状态和可用积点。
2. 用户要 VOC / 评论分析报告时,默认运行 `voc <ASIN> --site <站点>`。
   **返回里有 `autoConfirmed: true` 就说明已经直接生成了**(1.4.5 起:服务端对前几次小额
   付费操作免确认,用户先拿到结果再谈钱),此时把报告讲给用户,并转述 `autoConfirmNote`
   (本次扣了多少、还剩几次免确认、之后会先问)。**不要在拿到结果后再补问「要不要生成」。**
3. 返回 `confirmationRequired: true` 才需要用户确认:报出 `totalCredits` 与余额,
Confidence
96% confidence
Finding
This section explicitly permits the agent to run a default VOC workflow that may auto-confirm and charge the user before any fresh approval in the current interaction. Autonomous initiation of billable external actions is dangerous because it can spend credits and generate reports based on inferred intent rather than explicit, transaction-specific consent.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
1. 运行 `check`,确认账户、邮箱验证状态和可用积点。
2. 用户要 VOC / 评论分析报告时,默认运行 `voc <ASIN> --site <站点>`。
   **返回里有 `autoConfirmed: true` 就说明已经直接生成了**(1.4.5 起:服务端对前几次小额
   付费操作免确认,用户先拿到结果再谈钱),此时把报告讲给用户,并转述 `autoConfirmNote`
   (本次扣了多少、还剩几次免确认、之后会先问)。**不要在拿到结果后再补问「要不要生成」。**
3. 返回 `confirmationRequired: true` 才需要用户确认:报出 `totalCredits` 与余额,
   用户同意后运行 `voc <ASIN> --site <站点> --confirm`。该命令会自动补齐采集、等待任务完成、
Confidence
96% confidence
Finding
The skill instructs the agent to proceed with paid collection/report generation flows once confirmationRequired is absent, effectively delegating spending decisions to backend policy rather than the user. In a skill with network, shell, and account-management abilities, that significantly increases risk of unintended charges and unauthorized external processing.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
用户只说自然语言。网页是补充视图(图表、分享链接、海报),不是把人送走的地方。

**确认与扣点**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。生成后一句话交代:本次扣了多少、
  还剩几次免确认(或「免费版小额不问」)。策略由服务端决定:免费版小额不问;付费版前几次不问,之后先问。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;
  说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
Confidence
95% confidence
Finding
The instruction to directly generate results when autoConfirm is true normalizes spending without explicit approval at the moment of execution. Because this skill can trigger paid collection and analysis against an external service, the context makes the autonomy more dangerous than a read-only skill.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**确认与扣点**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。生成后一句话交代:本次扣了多少、
  还剩几次免确认(或「免费版小额不问」)。策略由服务端决定:免费版小额不问;付费版前几次不问,之后先问。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;
  说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
- 报价需要确认时,只说两个数:这次多少积点、余额多少,然后等用户一个「好」。采集是**固定单价**:直接说「15 积点/页 × 3 页 = 45 积点」,不要说成「预计 / 最多」——价格不会浮动;商品评论不够这么多页时只收实际采到的页数,差额自动退回(`pricingNote` 已写好这句)。不要罗列参数。
Confidence
93% confidence
Finding
This finding reflects the same risky behavior at the same location: the skill delegates persistent spending-threshold configuration to the agent. The danger is amplified because the setting affects later sessions and commands, not just the immediate task, creating durable authorization drift.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**确认与扣点**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。生成后一句话交代:本次扣了多少、
  还剩几次免确认(或「免费版小额不问」)。策略由服务端决定:免费版小额不问;付费版前几次不问,之后先问。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;
  说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
- 报价需要确认时,只说两个数:这次多少积点、余额多少,然后等用户一个「好」。采集是**固定单价**:直接说「15 积点/页 × 3 页 = 45 积点」,不要说成「预计 / 最多」——价格不会浮动;商品评论不够这么多页时只收实际采到的页数,差额自动退回(`pricingNote` 已写好这句)。不要罗列参数。
Confidence
93% confidence
Finding
This finding reflects the same risky behavior at the same location: the skill delegates persistent spending-threshold configuration to the agent. The danger is amplified because the setting affects later sessions and commands, not just the immediate task, creating durable authorization drift.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| `watch delete` | product-operations/watches/{id}(DELETE) | 否;不删除商品资料、评论或历史报告 |
| `watch digest` | product-operations/watch-digest(GET) | 否;确定性摘要,`creditsUsed: 0` |
| `watch events` | product-operations/events(GET) | 否;读取确定性变化事件 |
| `analyze` | analysis/voc·keywords·insight·trend·variant·compare | 是;`--confirm` 或服务端 autoConfirm 命中 |
| `autoconfirm [N\|off\|default]` | user/autoconfirm(GET/PUT) | 否;设置免确认阈值(1.4.5) |
| `deepdive` | products + charts + reviews + reports + VOC quote/analysis | 默认否;`--confirm` 才分析 |
| `reports` / `report` | reports | 否 |
Confidence
88% confidence
Finding
The documentation explicitly allows `analyze` to execute billable operations when server-side `autoConfirm` rules are met, meaning an agent could trigger paid analysis without an explicit per-action user confirmation. In an agent setting, this weakens human approval boundaries and can lead to unintended spending or actions based on ambiguous prompts.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| `watch digest` | product-operations/watch-digest(GET) | 否;确定性摘要,`creditsUsed: 0` |
| `watch events` | product-operations/events(GET) | 否;读取确定性变化事件 |
| `analyze` | analysis/voc·keywords·insight·trend·variant·compare | 是;`--confirm` 或服务端 autoConfirm 命中 |
| `autoconfirm [N\|off\|default]` | user/autoconfirm(GET/PUT) | 否;设置免确认阈值(1.4.5) |
| `deepdive` | products + charts + reviews + reports + VOC quote/analysis | 默认否;`--confirm` 才分析 |
| `reports` / `report` | reports | 否 |
| `alerts` | alerts(`--mark-read` 时 alerts/read) | 否 |
Confidence
92% confidence
Finding
This finding is distinct because the same line documents a writable `user/autoconfirm` capability, not just a read-only status. A skill that can alter this setting may weaken future confirmation requirements and enable repeated unintended paid executions.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| `watch digest` | product-operations/watch-digest(GET) | 否;确定性摘要,`creditsUsed: 0` |
| `watch events` | product-operations/events(GET) | 否;读取确定性变化事件 |
| `analyze` | analysis/voc·keywords·insight·trend·variant·compare | 是;`--confirm` 或服务端 autoConfirm 命中 |
| `autoconfirm [N\|off\|default]` | user/autoconfirm(GET/PUT) | 否;设置免确认阈值(1.4.5) |
| `deepdive` | products + charts + reviews + reports + VOC quote/analysis | 默认否;`--confirm` 才分析 |
| `reports` / `report` | reports | 否 |
| `alerts` | alerts(`--mark-read` 时 alerts/read) | 否 |
Confidence
92% confidence
Finding
This finding is distinct because the same line documents a writable `user/autoconfirm` capability, not just a read-only status. A skill that can alter this setting may weaken future confirmation requirements and enable repeated unintended paid executions.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
voc B0... --site amz_us 是完整 VOC 的入口:先取得报价,已有足够评论时使用当前分析价格;
数据不足时合并采集与分析费用。符合服务端免确认规则且总额不超过上限时可能直接生成,
返回 autoConfirmed。否则返回 confirmationRequired,取得用户同意后追加 --confirm,
自动完成必要采集、等待、分析和归档。只读询价应使用 quote / collect 报价入口。

`collect --asin B0... --site amz_us --pages 3` 只返回报价;确认后追加
Confidence
90% confidence
Finding
This section states that VOC generation may proceed automatically under server-side no-confirmation rules and then perform collection, waiting, analysis, and archiving. That bundles multiple billable and state-changing actions behind implicit approval, increasing the chance of unintended charges and unwanted report generation in response to loosely phrased requests.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
先调用 `quote --type ...`。报价字段:
`type, basePrice, price, sampledReviews, totalReviews, balance, sufficient`,
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
Confidence
87% confidence
Finding
Exposing `autoConfirm` in quote results is not dangerous alone, but in this context it signals that the system may treat eligibility as authorization. For agent-driven workflows, conflating server-side eligibility with user intent can cause unauthorized paid analysis to run.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
先调用 `quote --type ...`。报价字段:
`type, basePrice, price, sampledReviews, totalReviews, balance, sufficient`,
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
并附 `web.report` / `web.product` 网页链接。
Confidence
90% confidence
Finding
This duplicate line still reflects a real issue: automatic execution of billable analysis based on prior policy rather than current confirmation. In practice, that is risky because agents may misinterpret exploratory prompts as authorization to spend credits.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
先调用 `quote --type ...`。报价字段:
`type, basePrice, price, sampledReviews, totalReviews, balance, sufficient`,
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
并附 `web.report` / `web.product` 网页链接。
Confidence
90% confidence
Finding
This duplicate line still reflects a real issue: automatic execution of billable analysis based on prior policy rather than current confirmation. In practice, that is risky because agents may misinterpret exploratory prompts as authorization to spend credits.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
`type, basePrice, price, sampledReviews, totalReviews, balance, sufficient`,
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
并附 `web.report` / `web.product` 网页链接。
Confidence
89% confidence
Finding
The inclusion of `autoConfirmNote` alongside automatic execution messaging reinforces a pattern where explanatory metadata may be used to justify skipping direct user approval. The field itself is harmless, but within this workflow it supports unsafe autonomous execution behavior.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
并附 `web.report` / `web.product` 网页链接。

- `voc`: Markdown VOC 报告,SSE 聚合后在 `data.content`,并归档。
Confidence
88% confidence
Finding
The repeated mention of `autoConfirmed: true` and immediate report availability indicates a workflow where the system may commit resources before the agent re-checks intent. In a tool-using assistant, that is a genuine safety issue because confirmation state can be stale, inherited, or misunderstood.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
并附 `web.report` / `web.product` 网页链接。

- `voc`: Markdown VOC 报告,SSE 聚合后在 `data.content`,并归档。
Confidence
88% confidence
Finding
The repeated mention of `autoConfirmed: true` and immediate report availability indicates a workflow where the system may commit resources before the agent re-checks intent. In a tool-using assistant, that is a genuine safety issue because confirmation state can be stale, inherited, or misunderstood.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
并附 `web.report` / `web.product` 网页链接。

- `voc`: Markdown VOC 报告,SSE 聚合后在 `data.content`,并归档。
Confidence
88% confidence
Finding
The repeated mention of `autoConfirmed: true` and immediate report availability indicates a workflow where the system may commit resources before the agent re-checks intent. In a tool-using assistant, that is a genuine safety issue because confirmation state can be stale, inherited, or misunderstood.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
}


def cmd_autoconfirm(args):
    """免确认阈值:不带参数=查看;`autoconfirm 50`=50 积点以内不问;`autoconfirm off`=每次都问;`autoconfirm default`=恢复默认。"""
    value = (args.value or "").strip().lower()
    if value:
Confidence
90% confidence
Finding
This command allows changing the account's auto-confirm threshold, which can enable future paid operations to proceed without per-action user confirmation. In an agent-integrated skill, mutating confirmation policy is security-relevant because it weakens a billing consent control beyond the immediate command invocation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
def cmd_autoconfirm(args):
    """免确认阈值:不带参数=查看;`autoconfirm 50`=50 积点以内不问;`autoconfirm off`=每次都问;`autoconfirm default`=恢复默认。"""
    value = (args.value or "").strip().lower()
    if value:
        if value in ("off", "ask", "0"):
Confidence
90% confidence
Finding
The logic accepts values like 'off', 'ask', '0', or numeric thresholds to modify future autonomous spending behavior. While not hidden, this changes a trust boundary by reducing confirmation requirements for later billable actions.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
def cmd_autoconfirm(args):
    """免确认阈值:不带参数=查看;`autoconfirm 50`=50 积点以内不问;`autoconfirm off`=每次都问;`autoconfirm default`=恢复默认。"""
    value = (args.value or "").strip().lower()
    if value:
        if value in ("off", "ask", "0"):
Confidence
90% confidence
Finding
The logic accepts values like 'off', 'ask', '0', or numeric thresholds to modify future autonomous spending behavior. While not hidden, this changes a trust boundary by reducing confirmation requirements for later billable actions.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
def cmd_autoconfirm(args):
    """免确认阈值:不带参数=查看;`autoconfirm 50`=50 积点以内不问;`autoconfirm off`=每次都问;`autoconfirm default`=恢复默认。"""
    value = (args.value or "").strip().lower()
    if value:
        if value in ("off", "ask", "0"):
Confidence
90% confidence
Finding
The logic accepts values like 'off', 'ask', '0', or numeric thresholds to modify future autonomous spending behavior. While not hidden, this changes a trust boundary by reducing confirmation requirements for later billable actions.

Static analysis

No suspicious patterns detected.