Back to skill

Security audit

Teslamate Deploy

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent TeslaMate installer, but it uses broad privileged deployment steps and insecure defaults that users should review before installing.

Install only on a dedicated, non-shared host after reviewing the scripts. Avoid the GitHub image fallback unless you independently trust and verify the images, restrict ports with a firewall or loopback/reverse proxy before startup, replace all default secrets, avoid password-mode SSH and disabled host-key verification, and do not paste Tesla tokens into chat or visible terminal prompts.

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 (6)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/install-teslamate.sh:145
Finding

Mutable Docker Images Are Downloaded from a Personal Repository and Executed

Content
View full analysis
/dev/null)) || die "$f SHA256 verification failed" done for f in $(echo "$files" | sort); do cat "${tmpdir}/${f//\//_}" done | gunzip | docker load ``` The fallback is automatically reached when a registry pull fails: ```bash if sudo docker pull "$img" 2>/dev/null; then ok "$img pulled successfully" else warn "docker pull $img failed; trying GitHub" download_github_image "$img" fi ``` The troubleshooting guide also recommends loading an archive without verification: ```bash curl -sL https://raw.githubusercontent.com/martinbj2008/docker_images/main/postgres/17/postgres-17.tar.gz \ | gunzip | docker load ``` ### Technical Analysis The installer downloads executable Docker image archives from the mutable `main` branch of a personal GitHub repository. Although SHA-256 checks are performed in the installer, the checksum manifest is downloaded from the same mutable repository and trust domain as the payload. An attacker who can modify the repository can replace both the image and its expected checksum. The resulting image is imported into Docker and later started by ` ...[truncated 1430 chars]
Remediation
View remediation
``` 4. If offline archives are necessary, publish them as immutable signed releases rather than files on a mutable branch. 5. Verify signatures using a separately established trust root, such as Cosign with a pinned public key. 6. Store expected digests in the audited Skill package rather than downloading checksums from the payload source. 7. Download to a file, verify it completely, inspect the expected image identity, and only then run `docker load`. 8. Remove the unverified `curl | gunzip | docker load` instructions from the troubleshooting guide. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/docker-compose.yml:3
Finding

All Installations Use Predictable Database Credentials and an Ineffective Encryption-Key Configuration

Content
View full analysis
/dev/null << ENV_CONFIG TM_ENCRYPTION_KEY=${TM_ENCRYPTION_KEY} TM_DB_PASS=${TM_DB_PASS} ENV_CONFIG chmod 600 .env ``` ### Technical Analysis Every installation receives the same known database password, `teslamate123`. The installer writes `TM_DB_PASS` to `.env`, but the Compose configuration hard-codes the password instead of using `${TM_DB_PASS}`. Likewise, `TM_ENCRYPTION_KEY` is written to `.env`, but the TeslaMate container is not configured with an `ENCRYPTION_KEY` environment variable. Consequently, the generated encryption-key setting does not provide the intended stable protection for stored Tesla credentials. The troubleshooting documentation itself describes failures caused by a missing stable `ENCRYPTION_KEY`. Changing only `.env` as instructed will not change the hard-coded database password in the current Compose file. ### Attack Path 1. An ...[truncated 1157 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/docker-compose.yml:10
Finding

Grafana, TeslaMate, and Unauthenticated MQTT Are Bound to All Network Interfaces

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/deploy-setup.sh:51
Finding

SSH Server Identity Verification Is Disabled During Privileged Deployment

Content
View full analysis
/dev/null; then ssh -fN "${opts[@]}" "$target" || die "Unable to establish SSH connection" fi ssh "${opts[@]}" "$target" "$@" fi ``` The same behavior is used for password-based file transfer: ```bash sshpass -p "$SSH_PASS" scp "${HOST_KEY_OPTS[@]}" "$src" "$dst" ``` ### Technical Analysis `StrictHostKeyChecking=no` accepts an unrecognized or changed server identity, while `UserKnownHostsFile=/dev/null` prevents the accepted identity from being persisted. Every connection can therefore trust whichever host key is presented at that moment. This is especially dangerous because the connection transfers installer scripts and invokes commands through `sudo`. In password mode, `sshpass -p` also exposes the password through a command-line argument to `sshpass`; depending on platform protections, another local process may be able to observe it. ### Attack Path 1. An attacker gains a network interception position through a hostile network, compromised router, DNS manipulation, ARP spoofing, or route hijacking. 2. The attacker presents an arbitrary SSH host key while impersonating the target server. 3. The deployment client accepts the key without warning or fingerprint validation. 4. In password mode, the user-provided SSH password is sent to the impersonating ...[truncated 622 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
references/troubleshooting.md:438
Finding

Tesla API Keys and Refresh Tokens Are Entered with Terminal Echo Enabled

Content
View full analysis
> "$ENV_FILE" else echo "IMPORTANT: paste the REFRESH TOKEN (second block from tesla_auth)," echo "NOT the access token (which expires in 8h)." read -p "Paste Tesla REFRESH token: " t echo "TM_AUTH_TOKEN=$t" >> "$ENV_FILE" fi read -p "Vehicle VIN (17 chars): " v echo "TM_VIN=$v" >> "$ENV_FILE" ``` The Skill documentation incorrectly states: ```text The script uses read -p for silent input and does not write the token to shell history. ``` ### Technical Analysis Bash `read -p` displays a prompt but does not suppress input echo. The `-s` option is required for silent input. Consequently, a pasted Tesla API key or refresh token is visibly echoed in the terminal. Avoiding shell history is not sufficient protection. The value may be exposed to a nearby observer, terminal recording, screen sharing, remote-session logging, or captured console output. The script also creates timestamped `.env` backups without explicitly restoring restrictive permissions after copying. ### Attack Path 1. A user follows the recommended authentication recovery procedure over SSH. 2. The user pastes a Tesla API key or refresh token at the `read -p` prompt. 3. The terminal echoes the complete credential. 4. An observer, screen recording, terminal log, or compromised endpoint captures the value. 5. The attacker uses the credential against Tesla-related APIs within the scopes and lifetime granted to it. ### Impact Assessment A stolen credential may expose Tesla account or vehicle information and may authorize vehicle-related API operations depending on its scopes. The documented requested scopes include vehicle data, location, and v ...[truncated 107 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/install-teslamate.sh:65
Finding

Installer Overwrites Global Docker Configuration and Restarts Shared Infrastructure

Content
View full analysis
/dev/null << DOCKER_CONFIG { "ipv6": false, "ip6tables": false, "registry-mirrors": ["${_mirror_url}"] } DOCKER_CONFIG else sudo tee /etc/docker/daemon.json > /dev/null << 'DOCKER_CONFIG' { "ipv6": false, "ip6tables": false } DOCKER_CONFIG fi if ! grep -q "^precedence ::ffff:0:0/96 100" /etc/gai.conf 2>/dev/null; then echo "precedence ::ffff:0:0/96 100" | sudo tee -a /etc/gai.conf >/dev/null fi sudo systemctl daemon-reload sudo systemctl restart docker } ``` This function is called even when Docker is already installed: ```bash # Regardless of whether Docker was preinstalled, configure mirror and network optimization configure_docker_network ``` ### Technical Analysis The installer unconditionally replaces `/etc/docker/daemon.json` instead of preserving or merging an existing configuration. This can remove registry credentials helpers, proxies, logging settings, storage settings, runtime configuration, security controls, and existing mirror configuration. It also disables Docker IPv6 and `ip6tables`, modifies the system-wide address-selection policy in `/etc/gai.conf`, and restarts Docker. These changes affect the entire host and all Docker workloads, not only TeslaMate. They are applied even when Docker was preinstalled and without first confirming that the target has the network problem these settings are intended to address. The privileged modifications exceed the minimum changes required to start a single Compose stack on a host with a working ...[truncated 1045 chars]
Remediation
View remediation
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (159)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

This second mismatch finding is substantively valid for the same reason: the skill is presented as routine install automation while it performs broader system administration and secret-handling tasks. In a remote deployment context, hidden breadth materially increases the chance of unsafe approval and unintended system modification.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

This second mismatch finding is substantively valid for the same reason: the skill is presented as routine install automation while it performs broader system administration and secret-handling tasks. In a remote deployment context, hidden breadth materially increases the chance of unsafe approval and unintended system modification.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
91% confidence
Finding

The skill directs users to place a Tesla API key and VIN into a plaintext .env file over SSH on the deployment host. Storing long-lived credentials in plaintext on disk increases exposure through backups, local compromise, accidental disclosure, and weak file permissions.

Content

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

  1. 复制生成的 key(只显示一次!)
  2. 编辑部署机上的 .env:
    bash
    ssh root@$HOST 'cd /root/teslamate && nano .env'
    # 加上:
    TM_API_KEY=<粘贴 key>
    TM_VIN=<你的 17 位车架号>
    

Credential Access

High
Category
Privilege Escalation
Confidence
87% confidence
Finding

The instructions tell the operator to manually obtain and paste a Tesla access token into the web UI. Manual clipboard- and terminal-based token handling is sensitive and can leak through clipboard history, shoulder surfing, screen recording, or accidental pasting into the wrong destination.

Content

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

md
适合没有 developer.tesla.com 账号的场景:

1. Mac 跑 `tesla_auth`(`./tesla_auth-aarch64-apple-darwin`),从输出里复制 **ACCESS TOKEN**(不是 refresh token)
2. 打开 http://$HOST:4000,把 token 粘进去,再填 VIN

**⚠️ 大坑**:access token 有效期只有 **8 小时**。从复制到粘贴尽量控制在几分钟内,否则 token 会过期,TeslaMate 报 "令牌无效" 错误。架构(arm64/arm32)和系统时间都不是问题,**就是 8h 时间窗**。

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

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

md
1. Mac 跑 `tesla_auth`(`./tesla_auth-aarch64-apple-darwin`),从输出里复制 **ACCESS TOKEN**(不是 refresh token)
2. 打开 http://$HOST:4000,把 token 粘进去,再填 VIN

**⚠️ 大坑**:access token 有效期只有 **8 小时**。从复制到粘贴尽量控制在几分钟内,否则 token 会过期,TeslaMate 报 "令牌无效" 错误。架构(arm64/arm32)和系统时间都不是问题,**就是 8h 时间窗**。

### 快速恢复:交互式 auth 设置脚本

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · references/troubleshooting.md (reported line 396)May include surrounding context.

md
1. Mac 跑 `tesla_auth`(`./tesla_auth-aarch64-apple-darwin`),从输出里复制 **ACCESS TOKEN**(不是 refresh token)
2. 打开 http://$HOST:4000,把 token 粘进去,再填 VIN

**⚠️ 大坑**:access token 有效期只有 **8 小时**。从复制到粘贴尽量控制在几分钟内,否则 token 会过期,TeslaMate 报 "令牌无效" 错误。架构(arm64/arm32)和系统时间都不是问题,**就是 8h 时间窗**。

### 快速恢复:交互式 auth 设置脚本

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · references/troubleshooting.md (reported line 432)May include surrounding context.

md
1. Mac 跑 `tesla_auth`(`./tesla_auth-aarch64-apple-darwin`),从输出里复制 **ACCESS TOKEN**(不是 refresh token)
2. 打开 http://$HOST:4000,把 token 粘进去,再填 VIN

**⚠️ 大坑**:access token 有效期只有 **8 小时**。从复制到粘贴尽量控制在几分钟内,否则 token 会过期,TeslaMate 报 "令牌无效" 错误。架构(arm64/arm32)和系统时间都不是问题,**就是 8h 时间窗**。

### 快速恢复:交互式 auth 设置脚本

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · references/troubleshooting.md (reported line 452)May include surrounding context.

md
1. Mac 跑 `tesla_auth`(`./tesla_auth-aarch64-apple-darwin`),从输出里复制 **ACCESS TOKEN**(不是 refresh token)
2. 打开 http://$HOST:4000,把 token 粘进去,再填 VIN

**⚠️ 大坑**:access token 有效期只有 **8 小时**。从复制到粘贴尽量控制在几分钟内,否则 token 会过期,TeslaMate 报 "令牌无效" 错误。架构(arm64/arm32)和系统时间都不是问题,**就是 8h 时间窗**。

### 快速恢复:交互式 auth 设置脚本

Credential Access

High
Category
Privilege Escalation
Confidence
88% confidence
Finding

This line normalizes editing a secret-bearing .env file for passwords and encryption keys. The context indicates the deployment relies on weak defaults and manual secret management, which raises the chance of credential reuse, leakage, or leaving defaults unchanged.

Content

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

改默认密码 / 加密密钥

cd ~/teslamate # 远程是 /home/$ssh_user/teslamate sudo nano .env # 改完重启: sudo docker compose up -d

text

## 注意事项

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

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

ssh ubuntu@ 'mkdir -p /home/ubuntu/teslamate' scp docker-compose.yml ubuntu@:/home/ubuntu/teslamate/ scp install-teslamate.sh ubuntu@:/home/ubuntu/teslamate/ ssh ubuntu@ 'cd /home/ubuntu/teslamate && sudo ./install-teslamate.sh --install-docker'

text
…with a 2-3 second `sleep` between each call.

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

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

ssh ubuntu@ 'mkdir -p /home/ubuntu/teslamate' scp docker-compose.yml ubuntu@:/home/ubuntu/teslamate/ scp install-teslamate.sh ubuntu@:/home/ubuntu/teslamate/ ssh ubuntu@ 'cd /home/ubuntu/teslamate && sudo ./install-teslamate.sh --install-docker'

text
…with a 2-3 second `sleep` between each call.

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

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

ssh ubuntu@ 'mkdir -p /home/ubuntu/teslamate' scp docker-compose.yml ubuntu@:/home/ubuntu/teslamate/ scp install-teslamate.sh ubuntu@:/home/ubuntu/teslamate/ ssh ubuntu@ 'cd /home/ubuntu/teslamate && sudo ./install-teslamate.sh --install-docker'

text
…with a 2-3 second `sleep` between each call.

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · references/troubleshooting.md (reported line 31)May include surrounding context.

ssh ubuntu@ 'mkdir -p /home/ubuntu/teslamate' scp docker-compose.yml ubuntu@:/home/ubuntu/teslamate/ scp install-teslamate.sh ubuntu@:/home/ubuntu/teslamate/ ssh ubuntu@ 'cd /home/ubuntu/teslamate && sudo ./install-teslamate.sh --install-docker'

text
…with a 2-3 second `sleep` between each call.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
94% confidence
Finding

Manual deletion of dpkg/apt lock files bypasses package-manager safety controls and can damage package state if executed while transactions are active. Because this is presented as a troubleshooting shortcut, users or agents may apply it unsafely on production hosts.

Content

Scanner excerpt · references/troubleshooting.md (reported line 54)May include surrounding context.

sudo lsof /var/lib/dpkg/lock-frontend

或强制解锁 (最后手段, 确认没有 apt 在跑)

sudo killall apt apt-get dpkg 2>/dev/null sudo rm /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock /var/cache/apt/archives/lock 2>/dev/null sudo dpkg --configure -a

text

Chaining Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Piping echo directly into sudo tee to overwrite /etc/resolv.conf is an unsafe privileged chain that changes host-wide DNS in a single opaque step. This reduces reviewability and increases the chance of accidental or agent-driven misuse on remote systems.

Content

Scanner excerpt · references/troubleshooting.md (reported line 68)May include surrounding context.

ping -c2 archive.ubuntu.com # DNS + 域名 cat /etc/resolv.conf # DNS 配置

临时换 DNS

echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf

text

### `permission denied` on Docker commands

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The documentation recommends granting the current user passwordless sudo for ALL commands via a sudoers drop-in. That creates persistent privilege escalation far beyond TeslaMate deployment needs and would let any compromise of that user account immediately become full root compromise.

Content

No source excerpt is available for this finding.

Chaining Abuse

High
Category
Tool Misuse
Confidence
98% confidence
Finding

Piping a sudoers rule into sudo tee creates an immediate unrestricted passwordless sudo configuration for the current user. This is a classic privilege-expansion anti-pattern with persistent security consequences and little deployment justification.

Content

Scanner excerpt · references/troubleshooting.md (reported line 77)May include surrounding context.

md
**Fix**: if `sudo docker` itself fails, passwordless sudo isn't configured. Either:
- Add the user to `docker` group: `sudo usermod -aG docker $USER` (logout/login required)
- Or configure passwordless sudo: `echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$USER`

### `docker compose version` returns "command not found"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Using rm /tmp/part.* is a broad glob deletion in a shared temporary directory and may delete unrelated files matching that pattern. The risk is limited but real on multi-user systems or repeated troubleshooting sessions.

Content

Scanner excerpt · references/troubleshooting.md (reported line 204)May include surrounding context.

-o "/tmp/part.$suf" done cat /tmp/part.* | gunzip | docker load rm /tmp/part.*

text

**To upload new versions** (run on a machine with Docker + SSH key to GitHub):

Chaining Abuse

High
Category
Tool Misuse
Confidence
81% confidence
Finding

Piping directly into sudo tee -a to modify /etc/gai.conf makes a persistent resolver-policy change without validation or rollback. In an automated troubleshooting flow, this can silently alter networking for unrelated applications.

Content

Scanner excerpt · references/troubleshooting.md (reported line 228)May include surrounding context.

Check what gai.conf currently has

grep -v "^#" /etc/gai.conf | grep -v "^$" || echo "gai.conf empty"

Add the IPv4 precedence rule

echo "precedence ::ffff:0:0/96 100" | sudo tee -a /etc/gai.conf

Re-test

getent ahosts registry-1.docker.io # should now show only A records

text

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

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

Content

Scanner excerpt · references/troubleshooting.md (reported line 289)May include surrounding context.

Permission denied (publickey) on SSH

Cause: the deploy machine doesn't have a private key matching what's in ubuntu@$server_ip:~/.ssh/authorized_keys.

Fix: the user needs to add the deploy machine's public key to the server. Ask them to run (on the deploy machine):

bash

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

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

Content

Scanner excerpt · references/troubleshooting.md (reported line 295)May include surrounding context.

Permission denied (publickey) on SSH

Cause: the deploy machine doesn't have a private key matching what's in ubuntu@$server_ip:~/.ssh/authorized_keys.

Fix: the user needs to add the deploy machine's public key to the server. Ask them to run (on the deploy machine):

bash

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

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

Content

Scanner excerpt · references/troubleshooting.md (reported line 293)May include surrounding context.

Fix: the user needs to add the deploy machine's public key to the server. Ask them to run (on the deploy machine):

bash
cat ~/.ssh/id_ed25519.pub    # 或 id_rsa.pub

…then paste that into the server's ~/.ssh/authorized_keys. If no key exists yet:

bash

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

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

Content

Scanner excerpt · references/troubleshooting.md (reported line 297)May include surrounding context.

Fix: the user needs to add the deploy machine's public key to the server. Ask them to run (on the deploy machine):

bash
cat ~/.ssh/id_ed25519.pub    # 或 id_rsa.pub

…then paste that into the server's ~/.ssh/authorized_keys. If no key exists yet:

bash

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

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

Content

Scanner excerpt · references/troubleshooting.md (reported line 305)May include surrounding context.

The script uses ssh -o StrictHostKeyChecking=no so this is unlikely, but if it happens it means SSH is rejecting the cipher/algorithm. Fix the server's sshd_config to allow modern algorithms, or pre-populate known_hosts:

bash
ssh-keyscan -H X.X.X.X >> ~/.ssh/known_hosts

5. Post-install: container unhealthy

Credential Access

High
Category
Privilege Escalation
Confidence
80% confidence
Finding

Instructing users to cat the .env file can expose stored secrets such as Tesla tokens, API keys, VINs, and encryption keys directly into terminals, logs, or chat transcripts. In an agent-assisted workflow, that materially increases the chance of credential leakage beyond the target host.

Content

Scanner excerpt · references/troubleshooting.md (reported line 323)May include surrounding context.

Fix:

bash
sudo docker compose logs <service-name>     # e.g. teslamate / postgres / grafana
# 常见: .env 文件没生成, 或 TM_ENCRYPTION_KEY 长度不够
cat ~/teslamate/.env    # 远程是 /home/ubuntu/teslamate/.env
# 重新生成 .env
cd ~/teslamate

Static analysis

No suspicious patterns detected.