OSV-Scanner

Google, проект OSV · лицензия Apache-2.0

Проверяет файлы зависимостей сайта или бота (package-lock.json, requirements.txt и другие) по открытой базе уязвимостей OSV и показывает версии с исправлением, если они есть в базе.

macOS · Linux · WindowsНа компьютере, на сервере и в контейнереБесплатно, Apache-2.0

✓ Проверено 18.10.2026: Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root: OSV-Scanner 2.7.0 из готового файла выпуска на GitHub, сумма sha256 сверена с выпуском. Что именно проверяли

Установить агентом ↓

Какую задачу решает

Консольная программа от Google для проверки зависимостей. Агент находит в папке проекта файлы со списком пакетов, сверяет их версии с базой уязвимостей OSV.dev и получает отчёт: какой пакет уязвим и что о его уязвимостях известно в базе.

  • Проходит папку проекта с ключом -r и сама находит package-lock.json, yarn.lock, pnpm-lock.yaml, requirements.txt, poetry.lock, uv.lock и другие файлы из списка документации. Файлы, которые внутри репозитория Git перечислены в .gitignore, по умолчанию пропускает.
  • Для уязвимости показывает идентификаторы (GHSA, PYSEC, CVE), а оценку CVSS и версию с исправлением, когда они указаны в базе. В прогоне они были у всех находок. Отчёт выводит таблицей, в JSON и Markdown, по справке программы есть ещё HTML и SARIF.
  • Код выхода подходит для проверки перед выкладкой: 0 - пакеты найдены и уязвимостей нет, 1 - уязвимости есть, 128 - файлов с пакетами не нашлось.
  • Уязвимость, которую вы проверили и решили оставить, исключается по ID в файле osv-scanner.toml рядом с файлом пакетов, можно с причиной и датой окончания.
  • Умеет проверять без сети: базу нужного реестра пакетов скачивают один раз (у PyPI на 18.10.2026 это 36 436 224 байт), дальше ключ --offline ничего не отправляет наружу.

Пример результата

Говоришь агенту

Проверь зависимости в папке proekt (там сайт на Node.js и бот на Python) на известные уязвимости. Скажи, что опасно и до каких версий обновить, файлы проекта не меняй.

Что получится

Мы прогнали этот сценарий на тестовой папке: package-lock.json с lodash 4.17.20 и minimist 1.2.5 и requirements.txt с requests==2.25.0 и Jinja2==2.11.2. Команда osv-scanner scan source -r --format json --output-file /work/report.json /work/proekt завершилась с кодом 1 за полторы секунды. В отчёте оказались все четыре пакета, а ещё idna 2.9.0 и urllib3 1.26.9: это зависимости requests, программа добавила их сама. Среди находок CVE-2021-44906 у minimist с исправлением в 1.2.6 и CVE-2023-32681 у requests. Наибольшие версии с исправлением по отчёту: lodash 4.18.0, minimist 1.2.6, requests 2.33.0, Jinja2 3.1.6, idna 3.15, urllib3 2.8.0. Исходные файлы остались без изменений, суммы sha256 совпали. Копия с этими версиями прошла повторную проверку с кодом 0.

Паспорт

Кто делает
Google, проект OSV
Исходный код
github.com/google/osv-scanner
Лицензия
Apache-2.0
Версия
2.7.0 на 18.10.2026
Системы
macOS · Linux · Windows
Где работает
На компьютере, на сервере и в контейнере
Цена
Бесплатно
Проверка
Проверено 18.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «OSV-Scanner». Работай по шагам и после каждого коротко говори, что сделал.

Что это за программа (каталог smyslokod.ru, официальные источники сверены 18.10.2026):
- официальный сайт: https://google.github.io/osv-scanner/
- исходный код: https://github.com/google/osv-scanner
- инструкция по установке: https://google.github.io/osv-scanner/installation/
- актуальная версия на 18.10.2026: 2.7.0
- лицензия: Apache-2.0
- для работы нужно (в отдельных случаях): Homebrew - только для установки через Homebrew на Mac

Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Команду osv-scanner fix запускай только после «да» человека и коммита или копии файлов проекта.
7. Когда человек не хочет отправлять список зависимостей наружу, работай по скачанной заранее базе с --offline, обычную проверку не запускай.
8. Исключение в osv-scanner.toml добавляй, если человек так решил, и записывай его причину в поле reason.
9. Код 0 называй так: в проверенных файлах при этих настройках известных уязвимостей не нашлось. Если были исключения в osv-scanner.toml или проверка шла по скачанной базе, скажи об этом.

Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
   - на компьютере: где лежит папка проекта: проверить зависимости перед выкладкой или после обновления пакетов.
   - на сервере: например, чтобы перед выкладкой проверить зависимости сайта на сервере. Для работы без сети базу скачивают заранее.
   - в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root. Готовый файл не требует динамических библиотек: ldd ответил not a dynamic executable.
1. Проверь, не стоит ли программа уже: osv-scanner --version. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Обязательных зависимостей у программы нет, то, что нужно в отдельных случаях, перечислено выше. Проверь свободное место на диске: нужно Готовый файл для Linux x86-64 - 57 725 088 байт, программа состоит из него одного. Для работы без сети нужна база для каждого реестра пакетов: по заголовку ответа сервера на 18.10.2026 PyPI - 36 436 224 байт, npm - 218 456 532 байт..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
   Способы из официальных источников:
   - macOS, Homebrew: brew install osv-scanner (Способ из документации проекта. На 18.10.2026 формула ставила 2.7.0, сами этим путём мы не ставили.)
   - Windows, winget: winget install --id Google.OSVScanner (Документация называет и этот путь. Пакет 2.7.0 берёт файл osv-scanner_windows_amd64.exe с GitHub, сумма в манифесте совпадает с выпуском. На Windows мы его не ставили.)
   - Linux, готовый файл с GitHub: curl -sSfLO https://github.com/google/osv-scanner/releases/download/v2.7.0/osv-scanner_linux_amd64 && mkdir -p ~/.local/bin && install -m 755 osv-scanner_linux_amd64 ~/.local/bin/osv-scanner (Сумму файла сверь с osv-scanner_SHA256SUMS на странице выпуска: у linux_amd64 это sha256 160c6253e2922e9e0a6a9771c5c4c40a4b3c6090b34a3cdd5e80c96cc2e4218b. Мы ставили так, сумма совпала. Папка ~/.local/bin должна быть в PATH.)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
   - osv-scanner --version: программа запускается без ошибки;
   - Во временной папке создай тестовый проект: package-lock.json с lodash 4.17.20 и minimist 1.2.5, requirements.txt с requests==2.25.0 и Jinja2==2.11.2. Прогони папку с ключом -r в JSON, таблицей и в Markdown, сверь, что найдены известные CVE и что исходные файлы не изменились. Подними версии до исправленных из отчёта и прогони копию снова. Отдельно испытай исключение по ID в osv-scanner.toml, ключ --no-resolve, скачивание базы и работу с --offline, --offline без базы и пустую папку. Делай это во временной папке и не трогай мои файлы.
     mkdir -p /work/dl && cd /work/dl && curl -sSfLO https://github.com/google/osv-scanner/releases/download/v2.7.0/osv-scanner_linux_amd64 && echo '160c6253e2922e9e0a6a9771c5c4c40a4b3c6090b34a3cdd5e80c96cc2e4218b  osv-scanner_linux_amd64' | sha256sum -c
     cd /work/dl && mkdir -p ~/.local/bin && install -m 755 osv-scanner_linux_amd64 ~/.local/bin/osv-scanner
     export PATH=$HOME/.local/bin:$PATH && osv-scanner --version
     mkdir -p /work/proekt/site /work/proekt/bot && cd /work/proekt && echo '{"name":"test-site","version":"1.0.0","private":true,"dependencies":{"lodash":"4.17.20","minimist":"1.2.5"}}' > site/package.json
     cd /work/proekt && echo '{"name":"test-site","version":"1.0.0","lockfileVersion":3,"requires":true,"packages":{"":{"name":"test-site","version":"1.0.0","dependencies":{"lodash":"4.17.20","minimist":"1.2.5"}},"node_modules/lodash":{"version":"4.17.20","resolved":"https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz","license":"MIT"},"node_modules/minimist":{"version":"1.2.5","resolved":"https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz","license":"MIT"}}}' > site/package-lock.json
     cd /work/proekt && printf 'requests==2.25.0\nJinja2==2.11.2\n' > bot/requirements.txt && sha256sum site/package.json site/package-lock.json bot/requirements.txt > /work/src.sum
     cd /work && osv-scanner scan source -r --format json --output-file /work/report.json /work/proekt; echo $?
     cd /work && osv-scanner scan source -r --format table /work/proekt; echo $?
     cd /work && osv-scanner scan source -r --format markdown --output-file /work/report.md /work/proekt; echo $?
     cd /work && osv-scanner scan source -r --no-resolve --format json --output-file /work/report-noresolve.json /work/proekt; echo $?
     cd /work/proekt && sha256sum -c /work/src.sum
     cp -r /work/proekt /work/proekt-fixed && cd /work/proekt-fixed && sed -i -e 's/4\.17\.20/4.18.0/g' -e 's/1\.2\.5/1.2.6/g' site/package-lock.json && printf 'requests==2.33.0\nJinja2==3.1.6\nidna==3.15\nurllib3==2.8.0\n' > bot/requirements.txt
     cd /work && osv-scanner scan source -r --format json --output-file /work/report-fixed.json /work/proekt-fixed; echo $?
     cp -r /work/proekt /work/proekt-ign && printf '[[IgnoredVulns]]\nid = "GHSA-35jh-r3h4-6jhm"\nreason = "test"\n' > /work/proekt-ign/site/osv-scanner.toml && cd /work && osv-scanner scan source -r --format json --output-file /work/report-ign.json /work/proekt-ign; echo $?
     cd /work && export OSV_SCANNER_LOCAL_DB_CACHE_DIRECTORY=/work/osvdb && osv-scanner scan source --offline-vulnerabilities --download-offline-databases -L /work/proekt/bot/requirements.txt; echo $?
     cd /work && export OSV_SCANNER_LOCAL_DB_CACHE_DIRECTORY=/work/osvdb && osv-scanner scan source --offline --format json -L /work/proekt/bot/requirements.txt > /work/report-off.json; echo $?
     cd /work && unset OSV_SCANNER_LOCAL_DB_CACHE_DIRECTORY && mkdir -p /tmp/emptytmp && HOME=/tmp/emptyhome XDG_CACHE_HOME=/tmp/emptyhome/.cache TMPDIR=/tmp/emptytmp osv-scanner scan source --offline -L /work/proekt/bot/requirements.txt; echo $?
     mkdir -p /work/empty && osv-scanner scan source -r /work/empty; echo $?
     rm -f ~/.local/bin/osv-scanner && hash -r && ! command -v osv-scanner && echo removed
   - если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: brew uninstall osv-scanner; Windows, winget: winget uninstall --id Google.OSVScanner; Linux, готовый файл с GitHub: rm -f ~/.local/bin/osv-scanner).

Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/osv-scanner#problemy

Промпт собран из официальных инструкций, сверенных 18.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.

Как ставят вручную

Способы из официальных источников, у каждого ссылка на первоисточник.

  • macOS · Homebrew · источник

    brew install osv-scanner

    Способ из документации проекта. На 18.10.2026 формула ставила 2.7.0, сами этим путём мы не ставили.

  • Windows · winget · источник

    winget install --id Google.OSVScanner

    Документация называет и этот путь. Пакет 2.7.0 берёт файл osv-scanner_windows_amd64.exe с GitHub, сумма в манифесте совпадает с выпуском. На Windows мы его не ставили.

  • Linux · готовый файл с GitHub · источник

    curl -sSfLO https://github.com/google/osv-scanner/releases/download/v2.7.0/osv-scanner_linux_amd64 && mkdir -p ~/.local/bin && install -m 755 osv-scanner_linux_amd64 ~/.local/bin/osv-scanner

    Сумму файла сверь с osv-scanner_SHA256SUMS на странице выпуска: у linux_amd64 это sha256 160c6253e2922e9e0a6a9771c5c4c40a4b3c6090b34a3cdd5e80c96cc2e4218b. Мы ставили так, сумма совпала. Папка ~/.local/bin должна быть в PATH.

Как удалить

  • macOS, Homebrew: brew uninstall osv-scanner
  • Windows, winget: winget uninstall --id Google.OSVScanner
  • Linux, готовый файл с GitHub: rm -f ~/.local/bin/osv-scanner

Что нужно для работы

  • Homebrew (в отдельных случаях) - только для установки через Homebrew на Mac

Системы

  • macOS - ставится через Homebrew, есть готовые файлы для Apple Silicon и Intel. На Mac мы не проверяли.
  • Linux - мы проверяли готовый файл для x86-64 на Ubuntu 24.04. В выпуске есть файл и для arm64.
  • Windows - ставится через winget, пакет Google.OSVScanner берёт файл выпуска с GitHub. На Windows мы не проверяли.

Где запускать

Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.

  • На компьютере - где лежит папка проекта: проверить зависимости перед выкладкой или после обновления пакетов.
  • На сервере - например, чтобы перед выкладкой проверить зависимости сайта на сервере. Для работы без сети базу скачивают заранее.
  • В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root. Готовый файл не требует динамических библиотек: ldd ответил not a dynamic executable.

Сколько ресурсов нужно

Место на диске
Готовый файл для Linux x86-64 - 57 725 088 байт, программа состоит из него одного. Для работы без сети нужна база для каждого реестра пакетов: по заголовку ответа сервера на 18.10.2026 PyPI - 36 436 224 байт, npm - 218 456 532 байт.
Память
Отдельно не мерили.
Сеть
Обычная проверка отправляет в OSV.dev имена пакетов, версии, названия реестров (npm, PyPI) и хэши файлов. В deps.dev уходят имена пакетов с версиями и реестрами. Исходный код по документации не уходит. В нашем прогоне проверка ходила к api.osv.dev (142.251.168.121) и api.deps.dev (34.120.109.238), порт 443. Скачивание базы шло к osv-vulnerabilities.storage.googleapis.com (172.217.22.219) и api.deps.dev, порт 443. Ещё в записи есть порт 53 у адресов, которые DNS вернул для этих же имён: при проверке это 142.251.168.121 и 2a00:1450:400c:c02::79 (api.osv.dev), при скачивании базы 12 адресов IPv4 (142.251.39.123, 142.251.39.219, 142.251.142.27, 142.251.209.155, 172.217.16.251, 172.217.20.59, 172.217.22.27, 172.217.22.59, 172.217.22.91, 172.217.22.123, 172.217.22.187, 172.217.22.219) и 4 адреса IPv6 из 2a00:1450:4007::/48 (osv-vulnerabilities.storage.googleapis.com). Соединениями это не было: так Go проверяет маршрут до адреса и пакетов при этом не отправляет. Проверка с ключом --offline не открыла ни одного соединения. Скачивание программы шло к github.com (140.82.121.4) и release-assets.githubusercontent.com (185.199.108.133-185.199.111.133), порт 443, плюс DNS контейнера 127.0.0.11. Доступ из России мы не проверяли.

Скачивание файла с суммами и установка заняли около 3 секунд. Проверка тестовой папки через сеть заняла полторы секунды.

Лицензия и платные замены

Лицензия Apache-2.0. Свободная лицензия: пользоваться можно бесплатно, в том числе в работе. Кто передаёт программу дальше, прикладывает текст лицензии и сохраняет уведомления об авторских правах. Текст лицензии

Цена: Бесплатно. Программа и база OSV.dev бесплатные, лицензия программы Apache-2.0.

Платные замены

Платную замену мы не указываем. Тарифы платных сервисов проверки зависимостей мы не сверяли. Эту задачу закрывают бесплатные npm audit, pip-audit и Trivy, их мы не запускали и описываем по документации.

Бесплатные замены

  • npm audit - Встроена в npm и проверяет только пакеты npm. Команда npm audit fix запускает npm install и меняет файлы проекта.
  • pip-audit - Для Python: проверяет окружения и файлы requirements, может сама обновить уязвимые пакеты.
  • Trivy - Ищет уязвимости, ошибки настроек и секреты в образах контейнеров, Kubernetes и репозиториях.

О чём помнить

  • Безопасность. Агент запускает osv-scanner в терминале сам (exec). Программа читает файлы пакетов в папке, которую укажет агент, вместе с вложенными папками при -r (read). Файлы проекта команда scan не меняет: в прогоне суммы sha256 исходных файлов совпали. Отчёт она пишет по пути из --output-file, а базу для работы без сети - в папку из OSV_SCANNER_LOCAL_DB_CACHE_DIRECTORY, а без неё по документации в папку кэша пользователя или во временную папку. Всё это с правами пользователя (write). Необратимые действия (acts) есть у команды osv-scanner fix: по документации она меняет package.json и package-lock.json и может запустить скрипты пакетов и обратиться к сторонним реестрам из проекта. Её мы не запускали. Анализ вызовов в коде на Go по документации включён сам и требует компилятор go в PATH, а ключ --call-analysis=rust запускает скрипты сборки build.rs из зависимостей, это тоже exec. С ключом --serve отчёт по документации раздаётся локально на порту 8000, этот режим мы не проверяли. Входа в учётные записи и ключей программа не просит.
  • Что уходит наружу. Обычная проверка отправляет в OSV.dev названия и версии пакетов, названия реестров и хэши файлов, в deps.dev названия и версии пакетов. Если эти сведения нельзя показывать постороннему сервису, скачайте базу заранее и проверяйте с ключом --offline. В прогоне такая проверка requirements.txt нашла уязвимости jinja2 и requests, включая CVE-2023-32681, и не открыла ни одного соединения. Зависимости requests она сама не добавляла: по документации в этом режиме разрешение зависимостей отключено. Совпадение офлайн-отчёта с обычным целиком мы не сверяли.
  • Отчёт показывает только известные уязвимости из той базы, по которой шла проверка. Код 0 значит, что в проверенном наборе зависимостей при этих настройках не нашлось уязвимостей, которые не исключены в osv-scanner.toml. Скачанную для --offline базу программа сама не обновляет. Общая база OSV пополняется, поэтому проверку стоит повторять перед каждой выкладкой.
  • Для requirements.txt без точных версий результат приблизительный: документация советует проверять файл блокировки или список из pip freeze. В нашем прогоне программа сама добавила зависимости requests (idna и urllib3) через deps.dev, а с ключом --no-resolve в отчёте остались только пакеты из файла.
  • Исключение в osv-scanner.toml действует только на файлы пакетов в той же папке и не переходит во вложенные. Если исключить один ID, вместе с ним уйдут и его синонимы: в прогоне GHSA-35jh-r3h4-6jhm ушёл вместе с CVE-2021-23337.
  • Табличный отчёт считает пакет столько раз, сколько раз он встретился: в прогоне Jinja2 пришёл из requirements.txt и из разрешения зависимостей, и в сводке было 7 пакетов вместо 6.

Частые проблемы

No package sources found, --help for usage information. (код 128)

В папке нет файлов пакетов, которые знает программа, или они перечислены в .gitignore. Проверь путь и ключ -r. Файл с другим именем укажи через -L, например -L requirements.txt:/путь/к/файлу. Файлы из .gitignore проверяются с ключом --no-ignore.

could not load db for PyPI ecosystem: unable to fetch OSV database: no offline version of the OSV database is available (код 127)

Ключ --offline включён, а базы для этого реестра пакетов в папке нет. Скачай базу командой с --offline-vulnerabilities --download-offline-databases и укажи ту же папку в OSV_SCANNER_LOCAL_DB_CACHE_DIRECTORY.

Код 1 у проверки, хотя команда отработала

По документации код 1 значит «найдены уязвимости», ошибкой программы он не считается. Открой отчёт и разбери находки. Ошибки самой программы идут с кодами 127 и выше.

Проверка

✓ Проверено 18.10.2026: Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root: OSV-Scanner 2.7.0 из готового файла выпуска на GitHub, сумма sha256 сверена с выпуском.

Когда
18.10.2026
Среда
Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root: OSV-Scanner 2.7.0 из готового файла выпуска на GitHub, сумма sha256 сверена с выпуском
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер Ubuntu 24.04 без данных и ключей, osv-scanner в нём не было. Скачали файл osv-scanner_linux_amd64 (57 725 088 байт) и osv-scanner_SHA256SUMS с GitHub, сумма sha256 совпала с выпуском. Положили файл в ~/.local/bin/osv-scanner, osv-scanner --version вывела osv-scanner version: 2.7.0.
  2. Скрипт сам создал тестовую папку proekt: в site/package-lock.json пакеты lodash 4.17.20 и minimist 1.2.5, в bot/requirements.txt строки requests==2.25.0 и Jinja2==2.11.2.
  3. Проверка через сеть: osv-scanner scan source -r --format json --output-file /work/report.json /work/proekt завершилась с кодом 1 за 1,5 секунды. В отчёте lodash, minimist, requests и Jinja2, а также idna 2.9.0 и urllib3 1.26.9, которые программа добавила как зависимости requests.
  4. Скрипт нашёл в отчёте CVE-2021-23337 у lodash, CVE-2021-44906 у minimist с исправлением в 1.2.6 и CVE-2023-32681 у requests. Табличный вывод и отчёт Markdown дали тот же код 1. Суммы sha256 исходных файлов не изменились.
  5. С ключом --no-resolve в отчёте остались только четыре пакета из файлов. В копии папки подняли версии до наибольших исправленных из отчёта: lodash 4.18.0, minimist 1.2.6, requests 2.33.0, Jinja2 3.1.6, idna 3.15, urllib3 2.8.0. Повторная проверка копии дала код 0 и пустой отчёт.
  6. Исключение: файл osv-scanner.toml с [[IgnoredVulns]] id = "GHSA-35jh-r3h4-6jhm" рядом с package-lock.json убрал эту уязвимость вместе с синонимом, у lodash осталось 4 записи из 5.
  7. Без сети: команда с --offline-vulnerabilities --download-offline-databases и OSV_SCANNER_LOCAL_DB_CACHE_DIRECTORY=/work/osvdb скачала базу PyPI all.zip на 36 436 224 байт. Потом osv-scanner scan source --offline --format json -L /work/proekt/bot/requirements.txt нашла CVE-2023-32681 у requests с кодом 1, и в записи соединений этой команды не было ни одного адреса.
  8. Ошибки: --offline без базы дал код 127 и no offline version of the OSV database is available, пустая папка дала код 128 и No package sources found.
  9. Удалили файл командой rm -f ~/.local/bin/osv-scanner, после hash -r команды osv-scanner в PATH не осталось. Отдельным прогоном все команды taskCommands карточки выполнили подряд в одной оболочке, каждая завершилась с кодом 0. Все проверки скрипт сделал сам и только после них напечатал TASK_OK.
ДатаВерсияОбъёмГдеИтог
18.10.20262.7.0задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Похожие программы

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.