# Page sync reports name failed pages

> Agno's SyncReport now carries failed_paths, the site paths of pages that failed to publish or delete during Knowledge.sync_pages, and each failure is logged with the page and its full cause chain.

- Published: 2026-10-02
- Author: Kaustubh Shukla
- Categories: Changelog
- Canonical: https://www.agno.com/blog/page-sync-reports-name-failed-pages
- Markdown: https://www.agno.com/blog/page-sync-reports-name-failed-pages.md

`SyncReport.failed_paths` in Agno holds up to 20 paths, the same cap as `errors`, while `failed` keeps the full count. A sync of docs.agno.com kept failing one or two random pages out of 3,913, and the old log line gave no page and no cause to chase.

We forced a connection reset on one page of a three page llms.txt and ran `Knowledge.sync_pages` on both releases.

```text
# Earlier releases (real output)
WARNING Page sync failed (SyncFailed)
status: partial | failed: 1

# This release (real output)
WARNING Page sync failed for /guides/setup.md (SyncFailed: sync_failed <- ConnectError: [Errno 104] Connection reset by peer)
status: partial | failed: 1 | failed_paths: ('/guides/setup.md',)
```

The prune path logs a matching `Page delete failed for …` warning. Your application can show users which pages to check, or treat a run where a handful of thousands failed as a success that needs a retry. A `partial` run still skips pruning until a clean sync.

See the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/05_agent_os/27_public_pages/README.md), and learn more about [syncing published pages](https://docs.agno.com/knowledge/published-pages#synchronize-published-markdown) in the documentation.
