Safeguard
Security Guides•

Who owns a transitive dependency when two teams disagree?

A transitive dependency belongs to the team that ships the artifact containing it. Here is how to settle ownership between app and library teams.

Safeguard Security Team
4 min read

The team that builds and deploys the artifact owns every dependency inside it, direct or transitive. A library team may have pulled the package in, but the service team answers for what runs in production. Settle one decision maker per service before a disagreement starts, not during one.

Why the argument happens

A transitive dependency is a package you did not choose. Your library needs package B, and B needs package C. Nobody on the app team typed C into a manifest, and nobody on the library team thinks of C as theirs either.

When C gets a vulnerability advisory, each side has a fair reading. The app team says the library introduced it. The library team says the app controls the lockfile. Both are right about a different part of the problem.

Two kinds of ownership

Split the question in two, because the answers differ.

  • Exposure ownership. Who is accountable for the risk in a running service? The team that deploys it.
  • Fix ownership. Who can change the thing that causes the risk? That might be the app team (an override), the library team (a release with a newer range), or the maintainer of C.

Exposure ownership never moves. Fix ownership can sit with someone else, and the exposure owner is responsible for chasing it.

SituationExposure ownerLikely fixer
Service pulls C through a shared internal libraryService teamLibrary team or service team override
Library published to external users pulls CEach consuming teamLibrary team, then each consumer
C is pulled by a build tool, not shippedTeam that owns the pipelinePipeline owner
C is in a base imageTeam that owns the imagePlatform team

A simple decision rule

Use three steps and write them down.

  1. Identify the artifact. Which deployable contains the package? Use the dependency tree or an SBOM to confirm it is actually shipped.
  2. Name the owner. The artifact owner opens the ticket and sets the deadline.
  3. Assign the fix. If the library team can release a fix faster than an override can be tested, they get the task, but the deadline stays with the artifact owner.

If two services contain the same package through the same library, each service owner tracks their own exposure. Do not merge them into one ticket owned by the library team, or the library team becomes a queue for everyone else's risk.

What to do when the rule is contested

Some disputes are really about priority, not ownership. A library team may say fixing C is not on their roadmap. Ask for a written answer with a date, or a statement that they will not fix it. Either one lets the service team move on to an override, a replacement, or a documented exception.

Keep the exception short and owned. It needs a name, a reason, and an expiry date. An exception that never expires is a quiet decision to accept the risk forever.

Make ownership visible

Put the owner in the place engineers already look. A service catalog entry, a repository ownership file, or a line in the service README all work. The point is that a scanner finding can be routed to a named team without a meeting.

Review the list when teams reorganize. Orphaned services are where these disputes go to sit unresolved.

Try it yourself

Click through it at your own pace, or open it full screen. Look at how a package appears in the inventory and which project pulls it in, because that path is what decides who gets the ticket.

Safeguard's SBOM and dependency scanning shows the path from a finding back to the project that ships it, which gives both teams the same facts to work from. You can run a free scan to see your own tree.

Quick check

Does the library team own a vulnerability in a package their library pulls in?

They own the library's dependency choices going forward, so they should respond. The team that deploys the service still owns the exposure in production.

Can an app team fix a transitive dependency without waiting for the library team?

Often yes, through an override or constraint in the ecosystem's own tooling. It needs testing, and it should carry an owner and an expiry date.

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.