z-code-bin
The package downloads prebuilt .deb binaries from a non-standard host (cdn-zcode.z.ai), which is not a widely recognized or whitelisted domain; while the checksums are provided and match, the source is an unverifiable binary release, creating a supply-chain risk if the host were compromised or spoofed.
Triggered rules
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:26
source_x86_64=("${pkgname}-${pkgver}-amd64::https://cdn-zcode.z.ai/zcode/electron/releases/${pkgver}/linux-x64/ZCode-${pkgver}-linux-x64.deb")
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 95%): The package downloads prebuilt .deb binaries from a non-standard host (cdn-zcode.z.ai), which is not a widely recognized or whitelisted domain; while the checksums are provided and match, the source is an unverifiable binary release, creating a supply-chain risk if the host were compromised or spoofed.
PKGBUILD
1 offending line(s) highlighted# Maintainer: czyt <czytcn@gmail.com>
pkgname=z-code-bin
pkgver=3.16.3
pkgrel=1
pkgdesc="ZCode - AI Agents combined with existing toolchains for planning, coding, review and deployment"
arch=('x86_64' 'aarch64')
url="https://zcode.z.ai"
license=('custom')
depends=(
'gtk3'
'libnotify'
'nss'
'libxss'
'libxtst'
'xdg-utils'
'at-spi2-core'
'util-linux'
'libsecret'
)
optdepends=(
'libappindicator-gtk3: for system tray icon support'
)
provides=('zcode')
conflicts=('zcode' 'zcode-bin' 'zcode-desktop-bin')
options=('!strip' '!debug')
source_x86_64=("${pkgname}-${pkgver}-amd64::https://cdn-zcode.z.ai/zcode/electron/releases/${pkgver}/linux-x64/ZCode-${pkgver}-linux-x64.deb")
source_aarch64=("${pkgname}-${pkgver}-arm64::https://cdn-zcode.z.ai/zcode/electron/releases/${pkgver}/linux-arm64/ZCode-${pkgver}-linux-arm64.deb")
sha256sums_x86_64=('128132b195977fd0a8c8a6c295cf42fe159222d7a5c5efefd8b5f00ef88ab8b6')
sha256sums_aarch64=('338e91013125ee49f665f1dc3a07af09518b05f53f9a5a359de4572009c660e2')
package() {
# Extract files from the .deb package.
case "$CARCH" in
x86_64) _src="${pkgname}-${pkgver}-amd64" ;;
aarch64) _src="${pkgname}-${pkgver}-arm64" ;;
esac
bsdtar -O -xf "${srcdir}/${_src}" data.tar.xz | bsdtar -C "${pkgdir}" -xJf -
# Fix permissions
chmod -R u=rwX,go=rX "${pkgdir}/opt/ZCode"
}
Changes since previous scan
--- PKGBUILD @ 2026-10-23 00:02+++ PKGBUILD @ 2026-11-01 00:21@@ -1,6 +1,6 @@ # Maintainer: czyt <czytcn@gmail.com> pkgname=z-code-bin-pkgver=3.16.2+pkgver=3.16.3 pkgrel=1 pkgdesc="ZCode - AI Agents combined with existing toolchains for planning, coding, review and deployment" arch=('x86_64' 'aarch64')@@ -25,8 +25,8 @@ options=('!strip' '!debug') source_x86_64=("${pkgname}-${pkgver}-amd64::https://cdn-zcode.z.ai/zcode/electron/releases/${pkgver}/linux-x64/ZCode-${pkgver}-linux-x64.deb") source_aarch64=("${pkgname}-${pkgver}-arm64::https://cdn-zcode.z.ai/zcode/electron/releases/${pkgver}/linux-arm64/ZCode-${pkgver}-linux-arm64.deb")-sha256sums_x86_64=('31ba7519cddd732dbb61f7c1e52ef6d26081d1b135fa93950dbc5d400c26abbc')-sha256sums_aarch64=('35bc72a8b9316703eca135f336e486a39740c9a3344423ead2e2038502c17cf0')+sha256sums_x86_64=('128132b195977fd0a8c8a6c295cf42fe159222d7a5c5efefd8b5f00ef88ab8b6')+sha256sums_aarch64=('338e91013125ee49f665f1dc3a07af09518b05f53f9a5a359de4572009c660e2') package() { # Extract files from the .deb package.Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 2 |
| 2026-10-31 00:07:41 | Medium | 2 |
| 2026-10-30 00:29:30 | Medium | 2 |
| 2026-10-29 00:13:55 | Medium | 2 |
| 2026-10-28 00:06:54 | Medium | 2 |
| 2026-10-27 00:23:28 | Medium | 2 |
| 2026-10-26 00:12:40 | Medium | 2 |
| 2026-10-25 00:20:48 | Medium | 2 |
| 2026-10-24 00:14:55 | Medium | 2 |
| 2026-10-23 17:38:05 | Medium | 2 |
| 2026-10-23 00:02:19 | Medium | 2 |
| 2026-10-22 00:13:10 | Medium | 2 |
| 2026-10-21 00:12:50 | Medium | 2 |
| 2026-10-20 17:28:05 | Medium | 2 |
| 2026-10-20 00:10:31 | Medium | 2 |
| 2026-10-19 00:03:55 | Medium | 2 |
| 2026-10-18 00:06:55 | Medium | 2 |
| 2026-10-17 00:21:55 | Medium | 2 |
| 2026-10-16 00:12:47 | Medium | 2 |
| 2026-10-15 00:28:05 | Medium | 2 |