Back to skill

Security audit

vigilath-geo

Security checks for vulnerabilities and agentic risk

Overview

This skill appears purpose-built for Vigilath GEO/SEO analysis, but its installer and credential handling create Review-level supply-chain and account-token risks.

Review before installing. Prefer OpenClaw's local-directory installer or a verified release instead of `curl | bash`; use `--dir` to install into one intended agent environment; verify that `VIGILATH_BASE` points only to the legitimate Vigilath API before authorizing; treat the stored token like an API key and remove or rotate it when no longer needed.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (5)

T03 · Remote Payload Retrieval and Execution

Error
Location
README.md:22
Finding

Remote installation script is executed directly without integrity verification

Content
View full analysis
--base https://vigilath.cn ``` Equivalent installation instructions also appear in `install.sh:5-10`. ### Technical Analysis The documented installation procedure streams a remote HTTP response directly into Bash. The downloaded script is not pinned to a release version, inspected before execution, verified against a cryptographic checksum, or authenticated with a digital signature. Consequently, the effective installer payload can change after this repository has been reviewed. Trust in the checked-in `install.sh` does not establish trust in the content that will later be served from the documented URL. HTTPS protects data in transit but does not protect against compromise of the hosting account, origin server, deployment pipeline, DNS configuration, or TLS termination infrastructure. ### Attack Path 1. An attacker compromises the hosting server, deployment pipeline, or account controlling `vigilath.cn`. 2. The attacker replaces the hosted `install.sh` response with a malicious shell payload. 3. A user follows the installation instructions. 4. `curl` downloads the modified response. 5. Bash executes the response immediately with the privileges of the installing user. 6. The payload can access the user's files, credentials, Agent configuration, and other resources available to that account. ### Impact Assessment Successful exploitation provides arbitrary shell command execution as the installing user. The affected scope can include: - Files and credentials accessible to the current user. - Agent Skill directories and configuration. - ...[truncated 387 chars]
Remediation
View remediation

T03 · Remote Payload Retrieval and Execution

Error
Location
install.sh:151
Finding

Installer downloads mutable Agent code and executes it without verification

Content
View full analysis
if [ -n "$ROOT_DIR" ] && [ -f "$ROOT_DIR/$1" ]; then cp "$ROOT_DIR/$1" "$2"; return 0; fi curl -fsSL "$SKILL_BASE/$1" -o "$2" 2>/dev/null && return 0 curl -fsSL "$SKILL_BASE/${1#vigilath-geo/}" -o "$2" 2>/dev/null && return 0 return 1 } fetch "vigilath-geo/scripts/geo_client.py" "$STAGE/geo_client.py" \ || die "Client download failed" FIRST_DEST="" INSTALLED="" for name in $PICK; do slug="vigilath-${name#vigilath-}" if ! fetch "$slug/SKILL.md" "$STAGE/SKILL.md"; then continue fi for d in "${DESTS[@]}"; do dest="$d/$slug" mkdir -p "$dest/scripts" cp "$STAGE/SKILL.md" "$dest/SKILL.md" cp "$STAGE/geo_client.py" "$dest/scripts/geo_client.py" [ -z "$FIRST_DEST" ] && FIRST_DEST="$dest" done done ``` The fetched Python client is subsequently executed during self-testing: ```bash if python3 "$FIRST_DEST/scripts/geo_client.py" check https://example.com --no-seo >/dev/null 2>&1; then say "Client check succeeded" fi if python3 "$FIRST_DEST/scripts/geo_client.py" capabilities >/dev/null 2>&1; then say "Authorization check succeeded" fi ``` ### Technical Analysis The installer downloads both executable Python code and Agent instruction files from a mutable remote origin. It does not verify a checksum, signature, pinned commit, expected file size, or known manifest before copying the files into trusted Agent directories. The downloaded Python client is then immediately invoked. This turns compromise of the remote content source into local code execution. The downloaded `SKILL.md` files are also security-sensitive even though they are not conventional executables. Agent platforms may load them as trusted instructions in future sessions. A remotely ...[truncated 1040 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/geo_client.py:51
Finding

Unrestricted API base configuration can redirect bearer tokens to an attacker-controlled server

Content
View full analysis
dict: token = _conf("VIGILATH_AGENT_TOKEN") if not token: _die("Missing token") return { "Authorization": f"Bearer {token}", "Content-Type": "application/json", } ``` Authenticated requests use the configured base directly: ```python def get(path: str, timeout: int = 30) -> dict: req = urllib.request.Request( f"{BASE}/{path.lstrip('/')}", headers=_headers(), ) with _request(req, timeout=timeout) as resp: return json.loads(resp.read().decode("utf-8")) ``` The installer derives and persists the API endpoint from an unrestricted argument: ```bash --base) SKILL_BASE="${2%/}" SKILL_BASE="${SKILL_BASE%/skill}/skill" shift 2 ;; ``` ```bash { echo "VIGILATH_AGENT_TOKEN=$TOKEN" echo "VIGILATH_BASE=$API_BASE" } > "$HOME/.vigilath/config" ``` ### Technical Analysis The API base is accepted from command-line arguments, environment variables, or the local configuration file without enforcing HTTPS or validating the hostname against an approved origin list. Authenticated client operations attach the bearer token to requests sent to that configured base. A deceptive installation command, compromised environment, or modified configuration can therefore redirect the token to a server controlled by an attacker. Because the installer explicitly encourages users to preserve the supplied `--base` argument, users may not recognize that changing this value changes the recipient of their account credential. ### Attack Path 1. An attacker supplies an installation command containing a malicious `--base` value, or modifies `VIGILATH_BASE ...[truncated 1215 chars]
Remediation
View remediation

other

Note
Location
scripts/geo_client.py:328
Finding

Device authorization unnecessarily discloses the local hostname

Content
View full analysis
"None": import socket import time def _post(path: str, payload: dict) -> dict: req = urllib.request.Request( f"{BASE}/{path}", data=json.dumps(payload).encode("utf-8"), headers={"Content-Type": "application/json"}, method="POST", ) with urllib.request.urlopen(req, timeout=20) as resp: return json.loads(resp.read().decode("utf-8")) try: d = _post("device/code", {"client": socket.gethostname()}) ``` The installer performs the same collection before authorization: ```bash resp="$(curl -fsS -m 20 -X POST "$API_BASE/device/code" \ -H 'Content-Type: application/json' \ -d "{\"client\":\"$(hostname 2>/dev/null || echo cli)\"}" 2>/dev/null)" ``` ### Technical Analysis The login and installation flows read the machine's hostname and transmit it to the configured server before the user has completed authorization. A hostname may contain a person's name, employer, department, project identifier, infrastructure role, environment name, or internal naming convention. Device-code pairing does not technically require the real system hostname; a constant application identifier or randomly generated local label would be sufficient. This is limited environment reconnaissance rather than broad host enumeration. The risk becomes more significant when combined with the unrestricted endpoint issue because the hostname may be sent to an attacker-controlled server. ### Attack Path 1. A user starts installation or runs the `login` command. 2. The script reads the local hostname. 3. The hostname is placed in the unauthenticated device-code request. 4. The request is transmitted to the configured A ...[truncated 398 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
install.sh:125
Finding

Default installer scope writes remotely fetched content into every detected Agent environment

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (29)

External Script Fetching

High
Category
Supply Chain
Confidence
98% confidence
Finding

This is a direct remote code execution pattern: the installer script is fetched from the internet and executed immediately with bash. In the context of a skill installer that may be run on developer workstations, CI runners, or agent hosts, compromise of the remote script source would yield full command execution and potentially credential theft or persistence.

Content

Scanner excerpt · README.md (reported line 22)May include surrounding context.

在要装 skill 的那台机器上跑:

bash
curl -fsSL https://vigilath.cn/skill/install.sh | bash

终端会显示一个 8 位配对码。用浏览器打开它给出的链接(https://vigilath.cn/link),登录 Vigilath 账号、输入配对码点「批准」,安装就自动继续完成。

Chaining Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

Command chaining into bash is dangerous here because it turns a documentation example into immediate arbitrary-code execution from a remote origin. In a skill ecosystem, users may follow these instructions reflexively, so the README itself becomes a social-engineering delivery vehicle for unsafe installation practices.

Content

Scanner excerpt · README.md (reported line 22)May include surrounding context.

在要装 skill 的那台机器上跑:

bash
curl -fsSL https://vigilath.cn/skill/install.sh | bash

终端会显示一个 8 位配对码。用浏览器打开它给出的链接(https://vigilath.cn/link),登录 Vigilath 账号、输入配对码点「批准」,安装就自动继续完成。

External Script Fetching

High
Category
Supply Chain
Confidence
99% confidence
Finding

This variant not only executes a remote script directly but also passes a token as an argument during installation on CI or unattended systems. That combination raises the stakes: a compromised installer can both execute arbitrary code and immediately capture the supplied token, enabling account/API abuse beyond the local host.

Content

Scanner excerpt · README.md (reported line 38)May include surrounding context.

无人值守的机器、CI、或不方便交互时,用控制台「对接集成」页生成的带 token 命令:

bash
curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- <你的token> --base https://vigilath.cn

--base 请照控制台给的那条命令原样用。脚本被 curl | bash 管道执行时拿不到自己的下载地址,基址只能靠它传入;不传会退到默认的 https://vigilath.cn。

External Script Fetching

High
Category
Supply Chain
Confidence
95% confidence
Finding

The documentation normalizes the curl | bash pattern by discussing its behavior and required parameters, reinforcing an unsafe execution model. Even though this line is explanatory text, it encourages a deployment path where remote content is trusted and executed without integrity verification.

Content

Scanner excerpt · README.md (reported line 41)May include surrounding context.

curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- <你的token> --base https://vigilath.cn

text

> `--base` 请**照控制台给的那条命令原样用**。脚本被 `curl | bash` 管道执行时拿不到自己的下载地址,基址只能靠它传入;不传会退到默认的 `https://vigilath.cn`。

### OpenClaw 用户

External Script Fetching

High
Category
Supply Chain
Confidence
98% confidence
Finding

The installation method explicitly instructs users to pipe a remotely fetched script directly into bash, removing the opportunity to inspect the code before execution and creating a high-risk supply-chain pattern. If the hosting server, DNS, TLS termination, or distribution path is compromised, arbitrary code will run immediately on the user's machine.

Content

Scanner excerpt · install.sh (reported line 5)May include surrounding context.

sh
# Vigilath GEO skill 一行安装 —— 给对方 agent(小龙虾)drop-in。
#
#   # 免 token(推荐):终端出配对码,浏览器点一下批准即可
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash
#
#   # 只装某几个窄技能(默认装全部 7 个窄技能)
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- --skills site-audit,seo-audit

Chaining Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

The command chain fetches code from the network and immediately executes it, which is a classic chaining-abuse pattern enabling one compromised component to trigger full code execution. Because this is an installer that also writes files and credentials, the downstream consequences of a poisoned response are substantial.

Content

Scanner excerpt · install.sh (reported line 5)May include surrounding context.

sh
# Vigilath GEO skill 一行安装 —— 给对方 agent(小龙虾)drop-in。
#
#   # 免 token(推荐):终端出配对码,浏览器点一下批准即可
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash
#
#   # 只装某几个窄技能(默认装全部 7 个窄技能)
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- --skills site-audit,seo-audit

External Script Fetching

High
Category
Supply Chain
Confidence
98% confidence
Finding

This is another direct example of the same unsafe pattern: remote script execution via a shell pipeline with parameters. The presence of arguments does not reduce the core risk that unreviewed remote code is executed immediately.

Content

Scanner excerpt · install.sh (reported line 8)May include surrounding context.

sh
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash
#
#   # 只装某几个窄技能(默认装全部 7 个窄技能)
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- --skills site-audit,seo-audit
#   # 装兜底全能包(一次只肯装一个技能的宿主用这个)
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- --skills geo
#

External Script Fetching

High
Category
Supply Chain
Confidence
98% confidence
Finding

The script examples continue to promote remote-to-shell execution as a standard install path. Repetition increases likelihood of adoption and normalizes an execution model that is highly dangerous under any upstream compromise scenario.

Content

Scanner excerpt · install.sh (reported line 10)May include surrounding context.

sh
#   # 只装某几个窄技能(默认装全部 7 个窄技能)
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- --skills site-audit,seo-audit
#   # 装兜底全能包(一次只肯装一个技能的宿主用这个)
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- --skills geo
#
#   # 已有 token(老方式,仍支持)
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- <你的token> --base https://vigilath.cn

External Script Fetching

High
Category
Supply Chain
Confidence
98% confidence
Finding

This example combines remote execution with passing a token as an argument, which can additionally expose credentials in shell history, process listings, logs, or telemetry depending on environment. It compounds the supply-chain risk with potential token disclosure risk.

Content

Scanner excerpt · install.sh (reported line 13)May include surrounding context.

sh
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- --skills geo
#
#   # 已有 token(老方式,仍支持)
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- <你的token> --base https://vigilath.cn
#
# 干三件事:① 把 skill 拷进探测到的 skills 目录(可多个平台同时装);
#           ② 拿到 token 写进 ~/.vigilath/config(chmod 600);③ 自检。

External Script Fetching

High
Category
Supply Chain
Confidence
97% confidence
Finding

The script itself acknowledges it is intended for curl | bash execution, confirming that the unsafe distribution model is part of the design rather than incidental documentation. In a skill context, this is especially dangerous because users may treat integration scripts as trusted glue and skip scrutiny.

Content

Scanner excerpt · install.sh (reported line 19)May include surrounding context.

sh
#           ② 拿到 token 写进 ~/.vigilath/config(chmod 600);③ 自检。
# 不挑框架:自动探测 OpenClaw / Claude / .agents / 当前项目,也可用 --dir 或 VIGILATH_SKILLS_DIR 指定。
#
# ★ --base 是"从哪个域名装就指向哪个域名"的关键:本脚本被 `curl | bash` 管道执行时,
#   拿不到自己的下载 URL($0 只是 "bash"),所以基址只能靠外部传入或走下面的默认值。
#   控制台「对接集成」页生成的命令会自动带上 --base <当前站点 origin>,
#   这样 test / vigilath.cn / www.vigilath.cn / www.vigilath.com.cn 全部自动对齐。

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The README explicitly instructs users to pipe a remotely fetched script directly into bash, which bypasses any opportunity to inspect or verify the code before execution. If the hosting domain, CDN, TLS termination, or upstream build/deploy pipeline is compromised, users will execute attacker-controlled code immediately on the machine where the skill is being installed.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 29)May include surrounding context.

md
这条命令对所有人都一样,可以直接印在文档、官网、聊天里 —— token 由脚本自己去换,**不经过剪贴板、不进 shell 历史**。配对码 10 分钟内有效、只能用一次。

- 装到哪:自动装进**所有**已存在的 skills 目录 —— OpenClaw `~/.openclaw/skills`、Claude `~/.claude/skills`、`~/.agents/skills`、当前项目 `./skills`;都没有则兜底 `~/.vigilath/skills`。也可 `--dir <路径>` 只装一处。
- 凭证:token 与 API 基址写进 `~/.vigilath/config`(权限 600,**无需设环境变量**)。
- 换账号 / token 过期:重跑 `python3 <skill目录>/scripts/geo_client.py login` 再授权一次即可,不必重装。

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill instructs the host agent to execute a local Python script that uses environment variables, shell execution, network access, and potentially file-writing behaviors, but the manifest does not declare any tool scope or allowed-tools constraints. This creates an overprivileged integration surface where the agent may invoke capabilities without explicit sandboxing or policy review, increasing the risk of unintended command execution, token exposure through surrounding tooling, or unsafe network interactions.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

L003 将“测一下这个网站”“帮我体检一下官网”等自然口语直接定义为触发条件,且声明“就直接跑 check”。这类短语在一般对话中也常见,缺少更明确的上下文约束或排除条件,可能导致技能在用户只是随口询问时被触发。

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

L095-L118 以“涉及以下任一,就调用本 skill”定义触发范围,并列出如“测一下”“体检”“热点可以蹭”等较口语化表达,但未提供足够的非触发示例来区分普通咨询与实际工具调用。虽然 L118 提到“不涉及以上两类的普通问题,不要调用”,边界仍较粗,容易与常规对话重叠。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
81% confidence
Finding

L186-L193 的自然语言规范以中文术语和固定说法强制约束输出表达,如“只念接口返回的数字”“名字照抄返回里的 metric_labels”,但未说明可根据用户语言偏好切换。若用户以其他语言交互,这会构成未经用户选择的语言/locale 限制。

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · install.sh (reported line 16)May include surrounding context.

sh
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- <你的token> --base https://vigilath.cn
#
# 干三件事:① 把 skill 拷进探测到的 skills 目录(可多个平台同时装);
#           ② 拿到 token 写进 ~/.vigilath/config(chmod 600);③ 自检。
# 不挑框架:自动探测 OpenClaw / Claude / .agents / 当前项目,也可用 --dir 或 VIGILATH_SKILLS_DIR 指定。
#
# ★ --base 是"从哪个域名装就指向哪个域名"的关键:本脚本被 `curl | bash` 管道执行时,

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · install.sh (reported line 194)May include surrounding context.

sh
#   curl -fsSL https://vigilath.cn/skill/install.sh | bash -s -- <你的token> --base https://vigilath.cn
#
# 干三件事:① 把 skill 拷进探测到的 skills 目录(可多个平台同时装);
#           ② 拿到 token 写进 ~/.vigilath/config(chmod 600);③ 自检。
# 不挑框架:自动探测 OpenClaw / Claude / .agents / 当前项目,也可用 --dir 或 VIGILATH_SKILLS_DIR 指定。
#
# ★ --base 是"从哪个域名装就指向哪个域名"的关键:本脚本被 `curl | bash` 管道执行时,

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · install.sh (reported line 60)May include surrounding context.

sh
# 好处:token 不经过剪贴板、不进 shell history,官网可以印同一条无参数命令。
device_login() {
  local resp status
  resp="$(curl -fsS -m 20 -X POST "$API_BASE/device/code" \
            -H 'Content-Type: application/json' \
            -d "{\"client\":\"$(hostname 2>/dev/null || echo cli)\"}" 2>/dev/null)" \
    || die "连不上 $API_BASE —— 检查网络,或用 --base 指定正确的站点域名"

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · install.sh (reported line 88)May include surrounding context.

sh
while [ "$(date +%s)" -lt "$deadline" ]; do
    sleep "$interval"
    # 轮询失败(网络抖动)不该中断整个流程,吞掉错误继续等
    out="$(curl -fsS -m 20 -X POST "$API_BASE/device/token" \
             -H 'Content-Type: application/json' \
             -d "{\"device_code\":\"$DEV_DEVICE_CODE\"}" 2>/dev/null || true)"
    [ -n "$out" ] || continue

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The installer performs actions beyond a narrow, transparent skill install: it enumerates multiple agent skill directories, deploys to all found locations, persists an authentication token under the user's home directory, and runs post-install self-tests. For a GEO/SEO analysis skill, this breadth increases blast radius and violates least surprise, making unintended cross-platform installation and credential persistence materially risky.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script automatically installs into every detected agent skills directory on the machine, including global and project-local locations, without requiring per-target confirmation. That behavior is broader than necessary for the stated purpose and can lead to unintentional propagation of the skill into environments the user did not intend to modify.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The executable flow copies skill files into all discovered agent skill directories without clearly notifying the user at runtime or asking for confirmation. Silent modification of multiple application/plugin paths increases the chance of unintended installation, trust confusion, and difficulty in rollback.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
93% confidence
Finding

The script creates a persistent per-user config file containing an access token, establishing session persistence beyond the immediate install session. In the context of an agent skill installer, long-lived local credentials expand the impact of local compromise and make silent future API access possible.

Content

Scanner excerpt · install.sh (reported line 187)May include surrounding context.

sh
for d in "${DESTS[@]}"; do say "已安装到 $d:$INSTALLED"; done

# ── ③ token + API 基址写配置(基址与下载 skill 的 host 同源,自动对齐 test/prod)──
mkdir -p "$HOME/.vigilath"
umask 077
{
  echo "# Vigilath GEO —— 机密,勿提交"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The installer persists the agent token to ~/.vigilath/config during execution without an explicit runtime consent step. Storing credentials is security-sensitive because it creates long-lived local access that may be reused later by the client or exposed through backups, misconfiguration, or local compromise.

Content

No source excerpt is available for this finding.