What does Windows error code 681 (ERROR_STOPPED_ON_SYMLINK) mean?

 
Previous Next
ERROR_GUID_SUBSTITUTION_MADE ERROR_LONGJUMP

ERROR_STOPPED_ON_SYMLINK

What ERROR_STOPPED_ON_SYMLINK means

The operation intentionally did not follow the reparse point. This commonly appears when a caller asks to inspect the link itself, enforces a no-follow policy, or must continue resolution in user mode.

Where it appears

  • secure path validation and sandbox boundaries
  • file APIs using open-reparse-point semantics
  • backup, indexing, deployment, and package tools

Likely causes

  • a component in the path is a symbolic link or junction
  • the API was configured not to traverse reparse points
  • resolution crossed a policy boundary requiring explicit handling

Evidence to collect

  1. the original path and the component at which traversal stopped
  2. reparse tag and link target
  3. flags passed to the create/open operation
  4. whether the target escapes the expected root

How to respond

Decide explicitly whether following the link is permitted. To inspect it, open the reparse point itself; to continue, resolve the target under a policy that prevents traversal outside trusted roots. Never remove no-follow behavior merely to make the error disappear.

Diagnostic interpretation

For this particular status, the decisive evidence is the original path and the component at which traversal stopped, reparse tag and link target. Those details separate the documented condition from unrelated failures that happen to occur nearby.

Record the numeric code together with the symbolic name ERROR_STOPPED_ON_SYMLINK, the API or subsystem that produced it, and the first preceding failure. For ERROR_STOPPED_ON_SYMLINK, a later cleanup occurrence may describe a consequence instead of the initiating defect.

Example

A package extractor validates destination paths beneath a staging directory. Resolution stops on a junction inserted inside that tree. The safe response is to inspect the reparse target and reject extraction if it escapes staging, not to reopen the path with unrestricted following.

Implementation guidance

Code handling ERROR_STOPPED_ON_SYMLINK should distinguish a terminal failure from a warning, progress indication, or request to repeat after a defined state change. When handling ERROR_STOPPED_ON_SYMLINK, preserve handles and output fields only where the originating API explicitly keeps them valid. The ERROR_STOPPED_ON_SYMLINK path needs bounded retries and cleanup that tolerates partial initialization.

Validation after remediation

Repeat one controlled operation that previously produced ERROR_STOPPED_ON_SYMLINK. For ERROR_STOPPED_ON_SYMLINK, verify both disappearance of the status and completion of the specific state transition described above. Adjacent messages around ERROR_STOPPED_ON_SYMLINK must also be reviewed so a fallback is not mistaken for a complete repair.

References


Looking for a different code? Search another status or error code.