Join our Newsletter — 33% off our NHI Course

Non-Write User Access

Non-write user access is a workflow setting that lets users without repository write permissions trigger automation. It can be useful for low-risk tasks, but it becomes dangerous when the workflow can read secrets, write back to GitHub, or invoke tools that support data exfiltration. The security boundary is then too weak for untrusted input.

What Non-Write User Access Actually Means

Non-write user access is not a generic repository permission, it is a workflow permission model. The user cannot change repository contents directly, but can still trigger automation that may execute with more authority than the user has, so the real boundary is the workflow’s behavior, not the user’s write flag.

That distinction matters because workflow triggers are often treated as low risk by default. When the workflow only performs read-only checks or simple validation, the model can be acceptable; when it can reach secrets, mutate GitHub state, or call external tools, the same setting becomes a privilege boundary with security consequences.

Why the Boundary Becomes Fragile

The weak point is not the act of triggering, it is what the triggered workflow is allowed to touch. If untrusted input can influence a job that has access to secrets, tokens, or write-capable integrations, the workflow can become an indirect write path or an exfiltration path even though the triggering user never had write permission.

This is why non-write access is best understood as a conditional trust model. The user’s direct permissions are limited, but the workflow may still inherit repository context, environment variables, cached credentials, or downstream tool access that expands the effective blast radius.

For teams evaluating workflow trust, the relevant question is whether the automation is actually isolated from sensitive data and high-impact actions. If it is not, the setting no longer behaves like a harmless read-only convenience.

Where It Fits in Secure Automation

Non-write user access is most defensible for low-risk automation that validates inputs, runs tests, or produces artifacts without access to sensitive state. It is least defensible when the job can read secrets, post comments or commits, dispatch other workflows, or invoke external systems that can move data out of the repository boundary.

That is why workflow design and permission design must be treated together. A workflow that appears safe at the UI layer can still be unsafe if the job token, environment, or third-party action has broader authority than the triggering user should be able to exercise.

NHIMG’s Ultimate Guide to NHIs is useful background here because the same control problem shows up whenever non-human execution paths accumulate privileges that outgrow the human or process that initiated them.

How Teams Should Interpret the Risk Signal

Non-write user access is safe only when the workflow is deliberately constrained, the reachable data is non-sensitive, and the downstream actions are tightly bounded. Once the workflow can reach secrets or write-capable systems, the setting stops being a convenience control and starts acting like a privilege escalation surface.

That is why this term is less about “can the user commit code” and more about “what authority does the workflow inherit once it starts running.” The security review should follow the execution path, not the user interface label.

For broader context on the underlying failure modes, see Key Challenges and Risks and the evidence in 52 NHI Breaches Analysis, both of which show how excessive privilege and weak control boundaries lead to real compromise.

Risk and Threat Considerations

Non-write user access can expose secrets, enable unauthorized repository changes through automation, or provide a route into external tools that support data exfiltration. The danger is greatest when untrusted input can influence a workflow that inherits sensitive credentials or broad integration rights.

Failure mechanism: A user without direct write permission triggers automation that runs with higher-privilege context, then abuses repository-scoped secrets, tokened integrations, or write-back capabilities to perform actions the user could not do directly.

Impact: Attackers can steal data, alter source or workflow state, pivot into connected services, or quietly persist through trusted automation that defenders may not inspect as closely as a human account.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 address the attack and risk surface, while CIS Controls v8 and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-01 — Secrets and Credential Exposure Workflow-triggered automation can expose secrets through overbroad runtime access.
NHI-02 — Least Privilege and Scope The term hinges on preventing triggered automation from exceeding the triggerer's authority.
NHI-05 — Third-Party and Supply Chain Risk Tool invocation inside workflows can create exfiltration and trust-boundary risk.
Recommendation — Remove secrets from workflows unless the job strictly needs them. Minimise token scopes and workflow permissions to the exact action required. Review third-party actions and integrations before allowing them in triggered workflows.
CIS Controls v8 6 — Access Control Management Non-write access is an access-control decision about who can trigger automation and what it can do.
3 — Data Protection Sensitive data in workflow context makes the permission boundary materially stronger or weaker.
8 — Audit Log Management Triggered automation should be observable when non-write users can cause privileged actions.
Recommendation — Restrict workflow-trigger capabilities and associated privileges to the minimum necessary. Keep secrets and sensitive outputs out of workflows that non-writers can trigger. Log workflow triggers and downstream actions so unexpected execution paths are detectable.
NIST CSF 2.0 PR.AC — Identity Management, Authentication and Access Control The control question is whether trigger rights and workflow authority are bounded appropriately.
PR.DS — Data Security The setting becomes risky when workflows can reach secrets or other sensitive data.
DE.CM — Continuous Monitoring Triggered automation needs monitoring because misuse may look like normal workflow activity.
Recommendation — Constrain workflow-trigger access and the privileges inherited by the job. Protect secrets from workflows that do not genuinely need data access. Monitor workflow executions for unexpected secret use, write-back, or tool activity.

Practitioner Guidance

What to watch for: Treat this setting as acceptable only where the workflow is truly read-only in practice, not merely by policy name. The critical review point is whether the job can see secrets, influence commits, or reach external systems that materially extend its authority.

Practitioner takeaway: If the workflow can do more than the triggering user should be able to do, the control is no longer “non-write” in a meaningful security sense, it is delegated execution with implicit privilege.