HomeField Notes › Fortify · Service Accounts
Fortify · CI Pipeline Accounts

CI pipeline service accounts counted as Fortify seats

Modern application security runs inside the build pipeline. Scans are triggered automatically on every commit, pull request, or scheduled build, and those scans are submitted not by a person but by a service account that the pipeline uses to authenticate. When an audit reads the user directory, those service accounts look exactly like everyone else, and a measurement that does not distinguish them counts machinery as people. The pattern of CI pipeline service accounts counted as Fortify seats is one of the most common ways a developer seat finding inflates, and it is also one of the most straightforward to correct once the accounts are identified.

This article explains why pipeline automation produces accounts that should not be counted as seats, how to identify them, and how their removal brings the finding down. It supports our Fortify and AppSec audit defense practice and links up to the complete OpenText audit defense playbook for 2026.

Why automation produces phantom seats

The Fortify developer seat metric counts the people who submit code for analysis. A continuous integration pipeline submits scans on behalf of the whole development organization through one or a handful of service identities. Those identities may account for an enormous share of total scan activity, because automation runs constantly, but they represent infrastructure, not a population of developers. A measurement that counts each service account as a seat, or that reads the high scan volume those accounts generate as evidence of many users, inflates the count in two directions at once. This is the same conflation of access and activity with entitlement that we trace in Fortify Software Security Center user counting traps.

First principle

A pipeline that scans automatically is infrastructure, not headcount. The service account it authenticates with is not a developer seat, and the scan volume it generates is not a user count.

Identifying the service accounts

Service accounts are usually identifiable from their characteristics rather than their labels. Several signals mark an account as automation rather than a person:

Mapping scans back to people

Removing the service accounts is only half the work; the count then has to be rebuilt around the people the automation acts for. The defensible figure is the developers whose code the pipeline scans, counted under the developer seat metric, not the service identity that submits on their behalf. In practice this means attributing pipeline scans back to the commits and contributors that triggered them, which the source control and build systems record, and counting the distinct active contributors rather than the automation. This attribution is part of reducing a Fortify finding with commit and scan evidence and ensures the corrected count reflects real developers without double counting the pipeline.

Reconstructing the position

As with every Fortify line, the buyer rebuilds the position from its own records before any vendor measurement script runs. The Software Security Center directory and scan history are exported, service and pipeline accounts are classified and set aside, and the remaining activity is mapped to the active contributor population. The result distinguishes the small number of automation identities, which are not seats, from the genuine developer count, which is. This work sits inside reconciling Fortify entitlements before an audit and is what converts an automation inflated total into a defensible developer figure.

A representative outcome

In a recent engagement, a finding counted several CI service accounts as developer seats and additionally read the very high scan volume those accounts generated as evidence of a large user base. By identifying the automation identities from their naming, submission cadence, and token based authentication, the buyer set them aside and rebuilt the count from the active contributors whose commits the pipeline scanned. The corrected developer population was far below the claimed figure, and the finding settled well below its opening number. The path tracked our E-02 case file, where a Fortify developer seat overclaim of $4.5M settled at $0.9M, an 80 percent reduction, once automation and access were separated from actual code submitters.

Holding the distinction

The discipline on a pipeline driven finding is to keep machinery and people apart. A service account is not a seat, and the scan volume automation produces says nothing about how many developers exist. Both conflations are correctable from records the build and scan systems already hold, and both corrections bring the number toward the figure the entitlement supports. For the broader measurement context, see how OpenText measures Fortify usage in an audit.

Separate pipeline automation from developer seats

We identify CI service accounts, set them aside, and rebuild the count from actual contributors. Open a case to start the reconstruction.

Open a case →

For the seat counting methodology in full, read the Fortify seat counting white paper.

If an OpenText or Micro Focus audit notice has reached your desk, the first seven days carry more weight than any week that follows. OpenText Audit Defense is an independent, buyer side practice founded in 2020 by former vendor compliance leadership. We have defended more than 200 audits, brought the average finding down by 68 percent, and mitigated more than $90M in claims against vendor positions. We do not resell OpenText software and we are not affiliated with OpenText Corporation. To open a case, use the contact form on this site.