## TL;DR
Exit code 23 means rsync finished with a partial transfer because some files failed, and rsync prints each failing file and reason above the summary line. Scroll up from the code, group the per-file errors, fix the dominant cause such as permissions on the source, a full destination, or files locked open, and rerun; rsync will only retry what is missing.

```text
rsync failed with exit code 23: some files not transferred
```

## Use this when
- rsync exits 23 with some files not transferred.
- The log shows individual file errors before the final code.
- Most data copied but a subset of files is missing at the destination.

## Not for this skill when
- Exit code 24 alone, where source files vanished during transfer. That has its own handling.
- rsync cannot connect at all. Connection failures return different codes.

## Steps
1. Rerun or inspect the log and capture every per-file error line above the code 23 summary. Verify: all distinct error reasons are listed
2. Group the errors: permission denied, input or output errors, no space, or file changed. Note the count per group. Verify: the dominant cause is identified
3. Fix the dominant cause, for example correcting source permissions, freeing destination space, or excluding a lock-prone cache directory deliberately. Verify: a manual copy of one failed file now succeeds
4. Rerun the same rsync command and confirm the exit code is 0 or only an understood remainder. Verify: the rerun exit code improves and missing files arrive
5. If some files must stay excluded, add them to an exclude file with a comment so future 23s are real alarms. Verify: excludes are documented and the clean run returns 0

## Variant phrasings
### rsync error code 23 partial transfer
The short phrasing.
### rsync some files not transferred 23 fix
The symptom wording.
### rsync exit 23 permission denied files
The permission-group variant.

Compatibility: rsync 3.2 and later on Linux and macOS, local, SSH and rsync daemon modes, with ext4, XFS, APFS and NFS targets.

## Why it happens
Rsync is deliberately best-effort per file: it copies what it can and reports the rest at the end. Code 23 is therefore an index into the log, not a diagnosis. The causes are ordinary file system realities, unreadable files, destination pressure, and sources changing during a long run, and each leaves a distinct per-file message.

## Edge cases / pitfalls
- Running with --ignore-errors changes semantics and can hide real data loss. Avoid it for backups.
- A code 23 dominated by vanished files on a live system is often benign. Pair with code 24 handling and snapshot sources.
- Log to a file with --log-file for backup runs. Terminal scrollback loses the per-file lines you need.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_-pZRjsgGsimLYWXVq-eIQw
