How a scan works
A scan has four stages.- Understand the repository. An agent reads the repository and makes a threat model: the applications, the entry points, and where untrusted data goes into the system. Later stages use it as context.
- Find issues. LLM agents examine the code and report possible security issues with a severity and a category.
- Confirm issues. A validation agent examines each high and critical finding in the codebase. It can only read and search the code. It decides if the finding is real (true positive), not real (false positive), or unclear (unknown). It also sets the final severity.
- Report. Vidoc shows the confirmed findings in the web app. For pull request (PR) scans, it also writes comments on the PR.
Which findings Vidoc reports
Vidoc reports only confirmed findings. It does not report:- Findings that validation rejects (false positive).
- Findings that validation cannot confirm (unknown).
- Medium, low, and informative findings from stage 2. Vidoc does not validate them.
Which findings go to the pull request
Vidoc comments on the PR for confirmed findings with a final severity of critical, high, or medium. It does not comment on:- Findings in compliance categories. Refer to Security categories.
- Findings that a user set to Ignored.
Scan types
A push to the default branch does not start a scan. There are no scheduled scans.
Manual full repository scans need the Enterprise plan on Vidoc Cloud. Included in self-hosted installations.
First scan of a repository. When you turn on PR reviews for a repository, Vidoc prepares data about the repository. On self-hosted installations and on the Enterprise plan, Vidoc also runs a first full scan of the default branch. On the Pro plan, Vidoc prepares the repository context and does not run a full scan.
Finding model
Each finding has these fields.
Each category has a risk type: attack, compliance, or other. The web app shows compliance findings as Data & Compliance. Vidoc does not write PR comments for them.
Statuses
Users can set these statuses in the web app:- Open: the issue is active.
- Ignored: a user accepts the issue or decides not to fix it.
- False positive: the finding is not a real issue. Vidoc stores it as Ignored with the reason that the user gives. After that, the web app shows the finding as Ignored.
- Closed: the issue is fixed, or a user closed it.
closed: a user closed the finding, or revalidation no longer confirmed it.fixed: Vidoc closed the finding automatically, because a scan showed that the code no longer has the issue. The reason is “Automatically resolved”.
fixed.
Finding lifecycle
Vidoc tracks each finding across scans. Each scan updates the status of known issues:- If the code no longer has the issue, Vidoc sets the status to
fixed(shown as Closed). - If an automatically closed issue comes back, Vidoc sets the status to Open again.
- If revalidation no longer confirms a finding, Vidoc sets the status to Closed.
- If a user set an issue to Ignored or Closed, it stays in that status. Vidoc does not reopen it.
Learnings and memory
Vidoc keeps feedback from your team in Memory. Memory has two types of entries. A learning comes from feedback on one finding. Vidoc makes a learning in these cases:- A user sets a finding to Ignored or False positive and gives a reason, in the web app or through the REST API.
- A developer replies to a Vidoc comment on a PR (GitHub and GitLab only). Vidoc classifies the reply as “true positive” or “false positive”. Vidoc records the reply only when the platform user is linked to a Vidoc user with access to the project. For a false-positive reply, Vidoc also ignores the issue and resolves the comment thread.
How Vidoc uses Memory. The “find issues” stage does not use Memory. In validation, Vidoc selects the learnings and memory entries that apply to the finding and gives them to the validation agent. The agent weighs each entry with the code evidence. For example, a learning can make the agent mark a similar finding as a false positive. Then Vidoc does not report the finding and does not comment on the PR.
Memory has an effect only on findings that go to validation. An entry does not remove a finding directly. The validation agent makes the decision.
Review new entries regularly
There is no approval step for feedback. Each linked platform user with access to the project can mark a finding as a false positive with a reply on a PR, and Vidoc ignores the issue immediately. On GitHub and GitLab, developers can also add memory entries from a PR. We recommend that the AppSec team examines new entries on the Memory page regularly:- Filter by source (False positive, Confirmed true positive, and Pull request) to find the entries that came from PRs.
- Select Mark superseded for each entry that is wrong. Validation stops the use of the entry.
- A superseded learning does not reopen the issue that it ignored. To reopen the issue, find it on the Findings page (State: Ignored) and set it to Open.
The Memory page needs the Enterprise plan on Vidoc Cloud. Included in self-hosted installations.

