kimi-code-desktop-bin
Prebuilt proprietary Electron binary downloaded from 'code.kimi.com' — a non-standard vendor subdomain that cannot be independently verified as official Kimi/Moonshot infrastructure — with a checksum provided but no way to confirm the binary's authenticity or integrity beyond that hash; the realistic worst case is a silently swapped executable running with setuid chrome-sandbox permissions, though the domain is plausibly the vendor's own release CDN.
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:20
source_x86_64=("KimiCode-${pkgver}-linux-amd64.deb::https://code.kimi.com/kimi-code/desktop/binaries/1.1.2/KimiCode-1.1.2-linux-amd64.deb")
zero_votes_recent
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
llm_review
An AI model (anthropic/claude-sonnet-4.6) reviewed this and agrees it is MEDIUM (confidence 65%): Prebuilt proprietary Electron binary downloaded from 'code.kimi.com' — a non-standard vendor subdomain that cannot be independently verified as official Kimi/Moonshot infrastructure — with a checksum provided but no way to confirm the binary's authenticity or integrity beyond that hash; the realistic worst case is a silently swapped executable running with setuid chrome-sandbox permissions, though the domain is plausibly the vendor's own release CDN.
PKGBUILD
1 offending line(s) highlighted# Maintainer: colegeming <collegeming@outlook.com>
pkgname=kimi-code-desktop-bin
pkgver=1.1.2
pkgrel=1
pkgdesc='Kimi Code Desktop - GUI client for the Kimi Code agent (prebuilt binary)'
arch=('x86_64')
url='https://kimi.com/code'
license=('LicenseRef-proprietary')
# The vendor's Debian Depends/Recommends, translated to Arch names. libuuid1
# maps to util-linux, which is in base, so it is left out.
depends=('gtk3' 'libnotify' 'nss' 'libxss' 'libxtst' 'libsecret'
'at-spi2-core' 'xdg-utils')
optdepends=('libappindicator-gtk3: tray icon')
options=('!strip')
# Repackaged, not rebuilt: packaging the app is the vendor's job, and it loads
# its bundled Electron runtime from this exact /opt path. The local filename is
# version-tagged so makepkg's SRCDEST cannot hand back the previous version's
# .deb under a version-independent vendor name.
source_x86_64=("KimiCode-${pkgver}-linux-amd64.deb::https://code.kimi.com/kimi-code/desktop/binaries/1.1.2/KimiCode-1.1.2-linux-amd64.deb")
sha512sums_x86_64=('90374e5d2acdc47e35eadbd1167794e36477b125fbe0c56b62e76163bee2dd0d3c5c6867634f6563abdca91ea3515a146014ccce6ac52a4001949416e4cd6947')
# Keep makepkg from unpacking the .deb itself (bsdtar would scatter its ar
# members across $srcdir); package() unpacks data.tar deliberately.
noextract=("KimiCode-${pkgver}-linux-amd64.deb")
# The .deb also carries an AppArmor profile that exists to re-enable user
# namespaces under Ubuntu's restriction; Arch has no such restriction, so
# shipping it would only confuse apparmor_parser.
package() {
install -d "${srcdir}/deb"
bsdtar -xf "${srcdir}/KimiCode-${pkgver}-linux-amd64.deb" -C "${srcdir}/deb"
bsdtar -xf "${srcdir}/deb/"data.tar.* -C "${pkgdir}"
# `/opt/Kimi Code` (space included) is where the bundled Electron looks for
# its resources. Electron refuses to start unless the sandbox helper is
# root-owned setuid when user namespaces are unavailable -- the vendor's
# postinst sets 4755 for exactly that case, and the bit is simply unused
# where namespaces do work.
install -d "${pkgdir}/usr/bin"
ln -s "/opt/Kimi Code/kimi-code" "${pkgdir}/usr/bin/kimi-code"
chmod 4755 "${pkgdir}/opt/Kimi Code/chrome-sandbox"
# The Electron/Chromium notices ship inside the app directory; link them
# rather than duplicating 20 MB under /usr/share/licenses.
install -d "${pkgdir}/usr/share/licenses/${pkgname}"
ln -s "/opt/Kimi Code/LICENSE.electron.txt" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.electron.txt"
ln -s "/opt/Kimi Code/LICENSES.chromium.html" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSES.chromium.html"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-24 15:43:26 | Medium | 3 |
| 2026-10-24 15:40:54 | Medium | 3 |