saur-git
The source is a Git repository from the maintainer's own domain, used to build the project from source; this is normal for a -git AUR package, and the host, while not standard, is plausibly project-owned.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The source is a Git repository from the maintainer's own domain, used to build the project from source; this is normal for a -git AUR package, and the host, while not standard, is plausibly project-owned.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:22
source=("${_binname}::git+https://git.josf.dev/josefandersson/saur.git")
PKGBUILD
1 offending line(s) highlighted# Maintainer: Josef Andersson <josefandersson@tuta.io>
#
# Builds the saur binary from source with bun and installs it. This is a VCS (-git) package;
# update `url`/`source` to the published repo before uploading to the AUR.
pkgname=saur-git
_binname=saur
pkgver=1.4.0
pkgrel=1
pkgdesc="A safer AUR helper with Claude security review baked in"
arch=('x86_64' 'aarch64')
url="https://git.josf.dev/josefandersson/saur"
license=('MIT')
depends=('claude-code') # runtime: the `claude` CLI (authenticated)
makedepends=('bun' 'git')
provides=('saur')
conflicts=('saur')
# Do NOT strip: this is a bun standalone executable with the app bundle appended after the ELF.
# `strip` (which makepkg runs by default) corrupts that trailer, so the binary falls back to bun's
# own CLI — `saur update` then runs `bun update`. Keep the compiled binary intact.
options=('!strip')
source=("${_binname}::git+https://git.josf.dev/josefandersson/saur.git")
sha256sums=('SKIP')
pkgver() {
cd "$_binname"
printf "%s.r%s.g%s" \
"$(awk -F'\"' '/"version"/{print $4; exit}' package.json)" \
"$(git rev-list --count HEAD)" \
"$(git rev-parse --short HEAD)"
}
build() {
cd "$_binname"
bun install --frozen-lockfile
bun build src/main.ts --compile --outfile "$_binname"
}
check() {
cd "$_binname"
bun test
# Guard: a corrupt/miscompiled standalone binary falls back to bun's OWN CLI, so saur's
# `install`/`update` subcommands would run `bun install`/`bun update` (this shipped in the
# v1.0.0 saur-bin). A good build answers `--version` with `saur <ver>`; anything else means
# bun couldn't find the embedded app — fail the build rather than install a hijacked binary.
./"$_binname" --version | grep -q '^saur ' || {
echo "saur: compiled binary is hijacked by the bun runtime (embedded app not found);" >&2
echo " this build is corrupt. Try a different bun version and rebuild." >&2
return 1
}
}
package() {
cd "$_binname"
install -Dm755 "$_binname" "$pkgdir/usr/bin/$_binname"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |
| 2026-08-29 00:29:17 | Low | 2 |