TavernKeeper Scan Report

enclavum/otaku

Commit 2753db2 Reviewed

No material or immediate-danger concern was identified in this review.

This advisory report describes what the named tools and review process found at one exact commit. Unknown or unobserved behavior may still exist.

0 immediate danger 0 material 13 low

What this review found

No material or immediate-danger item was identified.

Contextual expected matches (11)

malcontent reported evasion-bypass_security-executionpolicy_bypass

Expected behavior · high confidence

The scanner saw wording about bypassing a Windows safety check, but it is only advice printed for Windows users explaining how to run this project's official Windows installer. Nothing in this script runs PowerShell or disables any protection.

Technical evidence

Scanner reason: malcontent matched behavioral-analysis rule evasion-bypass_security-executionpolicy_bypass. The match applies to this repository.

Contextual assessment: The flagged capability string appears only inside a fatal-error message that the script prints when it detects an unsupported Windows-like environment. That message tells the user how to run the project's separate Windows installer in PowerShell, and the suggested flag is the standard per-process convention for invoking an unsigned install script. The script itself never invokes PowerShell, never changes any execution policy, and never executes the suggested command; it merely prints instructions the user may choose to follow. No security control on the host is bypassed by this script.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
malcontent 1.25.7
Rule
evasion-bypass_security-executionpolicy_bypass
File role
production
Source
install.sh

malcontent reported c2-tool_transfer-exe_url

Expected behavior · high confidence

The flagged web address belongs to this project's own website and points to its Windows installer. It only appears in a help message, and nothing downloads it automatically.

Technical evidence

Scanner reason: malcontent matched behavioral-analysis rule c2-tool_transfer-exe_url. The match applies to this repository.

Contextual assessment: The matched endpoint is the project's own Windows installer address, referenced only in the same diagnostic message and corroborated by the project documentation, which advertises the Windows one-liner. This script does not download or execute that endpoint; it is fetched only if the user deliberately runs the suggested command on Windows. Destination, stated purpose, and disclosure align, and no staging, covert channel, or command-and-control behavior is shown.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
malcontent 1.25.7
Rule
c2-tool_transfer-exe_url
File role
production
Source
install.sh

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The demo's fake backend keeps a list of where real AI services would live — local programs on your own machine and two well-known cloud services the app says it supports. It only shows these addresses to the user; it never contacts them. This matches exactly what the project advertises.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link. The match applies to this repository.

Contextual assessment: The scanner flagged five literal URL strings in the demo's provider catalog. The flagged lines are static endpoint addresses for local inference engines (loopback hosts with fixed ports) and the two cloud model services the project's README explicitly names as supported providers. These strings are returned as data describing engine entries to the demo UI; no network request is initiated by this file, no credentials are attached (every entry reports no key), and the destinations match the project's stated purpose exactly. The localhost URLs use plain HTTP, but that is normal for local engine endpoints and nothing in this file connects to them. This is a keyword-level match with no dangerous data flow behind it.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
demo/web/store.js:183

OpenGrep reported tavernkeeper.download-and-execute.shell-pipeline

Expected behavior · high confidence

The flagged pattern is the familiar download-and-run one-liner that this project openly advertises as its install method. The script itself actually takes a safer approach than the flagged pattern: it downloads its helper installer to a file, checks that the file is not empty, and only then runs it.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.download-and-execute.shell-pipeline. The match applies to this repository.

Contextual assessment: The matched pipeline is the project's documented one-line install command, shown in a comment at the top of the file and repeated in the README; it is how the user obtains and runs this very script, not code the script executes. Internally the script is more conservative than the flagged pattern: the dependency installer is downloaded to a temporary file, verified to be non-empty, and only then executed, with an explicit comment noting that piping a download straight into a shell was avoided. The behavior matches the stated one-command installation purpose, is disclosed to users, and has no attacker-controlled trigger beyond the user's own decision to run the advertised command.

Impact: none · Exploitability: unlikely

Developer action: Optionally publish a checksum of the installer so users can verify what they pipe to the shell before running it.

Scanner
opengrep 1.26.0
Rule
tavernkeeper.download-and-execute.shell-pipeline
File role
production
Source
install.sh:4-5

OpenGrep reported tavernkeeper.download-and-execute.shell-pipeline

Expected behavior · high confidence

This is a help message, not code. When the Windows installer detects it is running on Mac or Linux, it prints a suggestion telling the user how to run the other installer. Nothing is downloaded or executed at this spot.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.download-and-execute.shell-pipeline. The match applies to this repository.

Contextual assessment: The match sits inside a here-string passed to the script's own error-reporting function. The text is advice printed to a user who ran the Windows installer on a non-Windows platform; the script does not execute the pipeline it quotes. There is no invocation of a download command, no pipe to a shell, and no execution path at this location — the literal text merely suggests the project's documented macOS/Linux one-line install. The full-file expansion confirms this script itself installs via a package-manager tool from a fixed HTTPS URL, writes only inside the user profile, and does not invoke piped shell execution anywhere.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.download-and-execute.shell-pipeline
File role
production
Source
install.ps1:228-229

OpenGrep reported tavernkeeper.download-and-execute.shell-pipeline

Expected behavior · high confidence

The flagged line is simply the project's instructions for installing its app with a single command, the same common style used by many popular developer tools. The command downloads the project's own installer from its official website and runs it, the page explains what the installer does, and other ways to install are listed. Nothing in the evidence suggests anything hidden or harmful; the only caveat is the ordinary one that any one-command installer asks you to trust the project's website.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.download-and-execute.shell-pipeline. The match applies to this repository.

Contextual assessment: The scanner matched a shell download-and-execute pipeline pattern, but the matched text is installation documentation, not shipped executable code. The documented one-command installer for macOS and Linux fetches the project's install script from the project's own website and pipes it into the shell. This is a standard, widely used installation idiom, fully visible to the user before they choose to run it, and proportionate to the project's stated purpose of one-command installation. The documentation additionally discloses what the installer does (installs a package manager if absent, then installs the tool) and offers alternative installation channels. The evidence shows no third-party or concealed destination, no obfuscation, and no attacker-controlled trigger or untrusted-input path; the installer script's own contents were not supplied, so no harmful behavior is demonstrated. The residual consideration is the generic supply-chain trust decision inherent to any remote-installer pattern, not a project-specific flaw, and it does not constitute demonstrated exposure.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.download-and-execute.shell-pipeline
File role
documentation
Source
README.md:66-67

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

The installer adds one clearly labeled line to your shell settings so the newly installed command can be found in new terminals. This is the normal, announced step that virtually every command-line installer takes, and it affects only your own user account.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: The matched line only selects which zsh configuration file will receive a PATH export. The subsequent append adds a single, labeled, idempotent line that places the tool's own binary directory on the user's PATH, guarded by a duplicate check so it is not added twice. The write is confined to the user's home directory, is announced in the script's output, and matches the stated purpose of installing a command-line tool. This is user-level PATH setup, not covert startup execution: nothing beyond a directory lookup runs at shell start, and no system-wide or hidden persistence mechanism is created.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
install.sh:244

OpenGrep reported tavernkeeper.persistence.startup-modification

Expected behavior · high confidence

This line just picks the correct settings file for bash users and adds the same single, clearly marked path setting described above, labeled as added by this installer.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.persistence.startup-modification. The match applies to this repository.

Contextual assessment: Detailed technical wording was omitted by the public report safety filter.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.persistence.startup-modification
File role
production
Source
install.sh:251

OpenGrep reported tavernkeeper.download-and-execute.shell-pipeline

Expected behavior · high confidence

Again, this is printed advice rather than an action. If the install fails on certain ARM-based Windows machines, the script shows the user alternative ways to install, including a suggested command they could type themselves under a Linux environment. The script does not download or execute anything here.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.download-and-execute.shell-pipeline. The match applies to this repository.

Contextual assessment: The matched lines are inside a quoted error message emitted when an installation fails on an ARM64 Windows machine. The script prints fallback advice, including the project's documented one-line install for use under a Linux subsystem, but does not run it. No download or execution occurs at this location; the surrounding function delegates all installation to an already-present package-manager binary, and the script's own execution flow never constructs a shell pipeline.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.download-and-execute.shell-pipeline
File role
production
Source
install.ps1:509-510

OpenGrep reported tavernkeeper.dynamic-execution.python-eval-or-shell

Expected behavior · high confidence

The app lets you tell it a command of your own that prints your encryption key, and it runs that command when it starts up. It only runs what you yourself wrote in your own settings file, and it only reads the key the command prints. It never takes commands from the internet, from chats, or from imported content. This is like a text editor launching the helper program you configured — a visible, documented feature, not a hidden trick.

Technical evidence

Scanner reason: OpenGrep matched static-analysis rule tavernkeeper.dynamic-execution.python-eval-or-shell. The match applies to this repository.

Contextual assessment: The flagged subprocess call is the command-based key provider for the at-rest encryption feature. It executes a single command string that the user authors in their own local configuration file, runs it to read a base64-encoded key-encryption key from standard output, and validates the output length before use. The command value never originates from remote content, story text, or imported data; the code path is selected only by the user's own configuration and the local keystore file, both of which require local machine control that already implies arbitrary execution. Shell interpretation of the configured string is the documented purpose, enabling password-manager and hardware-token helper integrations. No untrusted data is concatenated into or substituted within the command, output is captured rather than displayed or forwarded, and nothing is sent anywhere. The provider is also purely optional, with three non-command alternatives offered.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
opengrep 1.26.0
Rule
tavernkeeper.dynamic-execution.python-eval-or-shell
File role
production
Source
otaku/encryption/data.py:243

JavaScript analysis reported javascript.xray.shady-link

Expected behavior · high confidence

The scanner mistook a small piece of text used to read the app's own streamed replies — the same wording browsers use for live updates — for a suspicious link. The code around it only talks to the copy of the app running on your own computer, and nothing is sent anywhere else.

Technical evidence

Scanner reason: JavaScript analysis matched static JavaScript security signal javascript.xray.shady-link. The match applies to this repository.

Contextual assessment: The flagged line is part of a streaming-reply parser for the app's own web backend. It looks for the standard server-sent-events field marker inside frames the local backend produced; the heuristic likely reacted because that literal resembles a URI scheme. The module contains no external network destination at all: every request is made to a relative same-origin path served by the app on the user's machine, no credentials or story content are sent off-host, and the parser only splits frames already delivered by that same local connection. No attacker-controlled data reaches a network sink through this code.

Impact: none · Exploitability: unlikely

Developer action: none

Scanner
javascript-analysis webcrack-2.16.0_js-x-ray-16.0.0_signatures-1_literals-1_families-1
Rule
javascript.xray.shady-link
File role
production
Source
otaku/web/static/js/api.js:215

Related contextual observations

Advertised one-liner and Windows instructions are standard installer practice

low risk · high confidence

These scanner flags all come from normal, openly advertised install instructions rather than hidden behavior.

Technical assessment

All three candidates trace to the same installer narrative: a documented one-command install, a pointer to the sibling Windows installer, and the PowerShell invocation convention printed for users who land on an unsupported shell type. Each is user-initiated, disclosed in the project documentation, matches the stated one-command installation purpose, and involves no concealed execution, no credential access, and no undisclosed destination. The actual dependency installation deliberately avoids piping a download directly into a shell.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

PATH persistence is a single labeled, idempotent shell-configuration edit

low risk · high confidence

The installer makes one small, clearly marked change to your shell settings so its command works in new terminals. Nothing runs in the background because of it, and only your own account is affected.

Technical assessment

Detailed technical wording was omitted by the public report safety filter.

Impact: none · Exploitability: unlikely

Developer action: none

Sources:

Coverage and limitations

JavaScript coverage

Tools

Limitations

Technical scan identity