qoder-cli
Triggered rules
external_download_not_in_source
curl/wget fetches a URL on a non-allowlisted host that is not part of source=(), so it is not checksum-verified by makepkg.
-
PKGBUILD:27
curl -fsSL https://qoder.com/install | bash || {
llm_review
The static rules found a suspicious pattern they could not resolve, so an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed it and judged it HIGH (confidence 95%): This PKGBUILD executes `curl -fsSL https://qoder.com/install | bash` at build time with no checksum verification, no pinned version, and no source array entry. This is a classic supply-chain attack vector: the remote script can deliver arbitrary code to the builder's machine at any time. The PKGBUILD itself acknowledges 'Qoder does not publish official SHA256/MD5 checksums.' Additionally, pkgver='latest' means there is no reproducibility whatsoever. The binary installed is a proprietary, unverified executable from an unofficial/personal host (qoder.com is not a well-known vendor). The combination of piped shell execution of a remote script plus no integrity verification elevates this beyond a typical medium supply-chain concern to high severity.
PKGBUILD
1 offending line(s) highlighted# Maintainer: pakrohk <pakrohk@gmail.com>
pkgname=qoder-cli
pkgver=latest
pkgrel=1
pkgdesc="Qoder Agentic CLI - Advanced AI coding agent from Alibaba"
url="https://qoder.com/cli"
arch=('x86_64')
license=('proprietary')
# No runtime dependencies beyond base system (portable binary)
# Build-time: curl (usually present on Arch)
options=('!strip')
prepare() {
cd "${srcdir}"
echo "================================================================================"
echo "Preparing Qoder CLI installation..."
echo "================================================================================"
# Check if binary already provided manually
if [ ! -f "qoder-cli" ]; then
echo "Downloading latest Qoder CLI using official installation script..."
echo "Script: curl -fsSL https://qoder.com/install | bash"
# Run official script to download portable binary
curl -fsSL https://qoder.com/install | bash || {
echo "ERROR: Download failed. Check internet connection or sanctions bypass."
echo "Alternative: Manually download the Linux CLI binary from https://qoder.com/cli"
echo " Place it as 'qoder-cli' in this directory and rerun makepkg."
exit 1
}
# Official script typically outputs 'qoder' or 'qodercli' - rename safely
if [ -f "qoder" ]; then
mv qoder qoder-cli && echo "Renamed 'qoder' → 'qoder-cli'"
elif [ -f "qodercli" ]; then
mv qodercli qoder-cli && echo "Renamed 'qodercli' → 'qoder-cli'"
else
echo "ERROR: Expected binary (qoder or qodercli) not found after script execution."
echo "Please check script output or download manually."
exit 1
fi
else
echo "Using pre-placed qoder-cli binary from source directory"
fi
# Security notice
echo "================================================================================"
echo "NOTE: Qoder does not publish official SHA256/MD5 checksums."
echo " For security-critical use, verify the binary manually."
echo "================================================================================"
}
package() {
cd "${srcdir}"
echo "================================================================================"
echo "Installing Qoder CLI..."
echo "================================================================================"
# Install portable binary
install -Dm755 qoder-cli "${pkgdir}/usr/bin/qoder"
echo "Binary installed to /usr/bin/qoder"
echo "================================================================================"
echo "Qoder CLI successfully installed!"
echo ""
echo "Launch with: qoder"
echo "First run: Use /login command inside CLI to sign in (pakrohk@gmail.com)"
echo "Enjoy agentic coding in your terminal! 🚀"
echo "================================================================================"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | HIGH | 2 |
| 2026-08-02 00:16:08 | HIGH | 2 |
| 2026-08-01 00:11:18 | HIGH | 2 |
| 2026-07-31 00:14:10 | HIGH | 2 |
| 2026-07-30 00:17:23 | HIGH | 2 |
| 2026-07-29 00:25:53 | HIGH | 2 |
| 2026-07-28 00:07:28 | HIGH | 2 |
| 2026-07-27 00:24:32 | HIGH | 2 |
| 2026-07-26 00:07:32 | HIGH | 2 |
| 2026-07-25 00:13:44 | HIGH | 2 |
| 2026-07-24 00:02:28 | HIGH | 2 |
| 2026-07-23 00:14:47 | HIGH | 2 |
| 2026-07-22 00:29:32 | HIGH | 2 |
| 2026-07-21 00:24:15 | HIGH | 2 |
| 2026-07-20 00:19:49 | HIGH | 2 |
| 2026-07-19 00:17:08 | HIGH | 2 |
| 2026-07-18 00:14:48 | HIGH | 2 |
| 2026-07-17 00:06:16 | HIGH | 2 |
| 2026-07-16 00:05:41 | HIGH | 2 |
| 2026-07-15 00:09:25 | HIGH | 2 |