CTIPilot
AI-generated · no human review · verify critical claims against the linked source. how it works →

UK ICO breach notifications

ico-uk · A · active

https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/

breachesch-eulang: enfetch failures: 2quiet periods: 8last fetch: 2026-10-22

Information Commissioner's Office breach announcements. WebFetch returns HTTP 403 (ICO filters the routine UA; re-confirmed 2026-05-08). REQUIRED FETCH METHOD: `python3 tools/fetch_source.py url https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/`. For specific enforcement action listings use `python3 tools/fetch_source.py url https://ico.org.uk/action-weve-taken/enforcement/`. | 2026-06-20 full audit (v2.62): live=Y, drill=Y. FETCH → api: python3 tools/fetch_source.py ico-uk enforcement N (returns enforcement URLs from sitemap; then `url <enforcement_url>` for body). News index via `url https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/`.. AVOID: WebFetch 403s the routine UA, skip it, use the bridge. Article body text sits inside <main id='main-content'>; the page leads with a large cookie-banner JSON island so naive byte-range reads miss the body.. | 2026-07-05 admiralty audit: A, first-party government regulator publishing its own enforcement/breach decisions; primary authority for its jurisdiction. HIGH->A, stays active. | 2026-07-28: bridge returned the JS-rendered page shell with no dated listing. No demotion, transport/anti-bot block, not content death. | 2026-07-30: fetch_method bridge -> jina. S2 reached https://ico.org.uk/action-weve-taken/enforcement/ with HTTP 200 but the enforcement-action list sits behind a JS-hydrated block grid and no dated /enforcement/action/<slug> hrefs surface in the raw body. Switching fetch_method to jina to hydrate the listing. Transport block, not source death, no demotion (HTTP 200 throughout). | 2026-08-02: flagged needs-demote by the sweep, diagnosed as the reader-credential outage, NOT a recipe break. All four pooled jina keys report HTTP 402 (exhausted, negative balance) this run, and this record is pinned fetch_method: jina precisely because the listing is JS-hydrated. Direct alternatives probed this run: https://ico.org.uk/action-weve-taken/enforcement/ and the news-and-blogs listing both return HTTP 200 with a browser UA but expose no dated enforcement hrefs in the raw body (the hydration problem the 2026-07-30 note already recorded), and /rss paths under both return 404. No demotion; HTTP 200 throughout and the recipe is intact; the source returns as soon as reader credit is restored. | 2026-08-15: health-probe failure this run is an artifact of the exhausted reader key pool, not a recipe defect; fetch_method is pinned to the reader. Not demoted; re-probe once the pool is topped up. | 2026-08-16: source_health flagged needs-demote; a serial re-probe this run returned 50 KB through the generic `url` bridge. Same parallel-contention artifact as ncsc-ch-incidents. NOT demoted. | 2026-08-16 weekly (RECIPE FIX): fetch_method jina -> bridge. The record was pinned to the reader, which is why source_health kept flagging it needs-demote while the reader pool sat at HTTP 402, the generic `url` bridge reaches this host directly and returned 50 KB for /action-weve-taken/enforcement/ and 40 KB for the media-centre listing on a serial probe this run. Pinning to the reader was the defect; this is a fix, not a workaround. Cite the per-action /action-weve-taken/enforcement/<year>/<month>/<slug> or media-centre URL. | 2026-08-18: RECIPE FIX CANDIDATE: /media-centre/news-and-blogs/ returned 404 on the direct transport this run, while current ICO news items resolve under /about-the-ico/media-centre/news-and-blogs/YYYY/MM/. The enforcement listing remains a client-side-filtered application with no server-rendered result links on any transport. | 2026-09-29: listing at /about-the-ico/media-centre/news-and-blogs/ is a JS-loaded widget (POST /api/search, 'Loading...' placeholders), never a health or content surface. Working recipe = sitemap: `ico-uk enforcement N` (222 enforcement URLs with lastmod, per-action pages extract cleanly with date/type/sector fields) plus, for news/statements, the same sitemap.xml entries under /about-the-ico/media-centre/news-and-blogs/YYYY/MM/ (278 items, newest lastmod 2026-09-28) then `extract <item URL>`. Enforcement cadence is 0-7 actions/month (none in Jun 2026), so max_staleness_days 90. (2026-09-29T2134Z-audit) | 2026-09-30 intel run: sitemap recipe confirmed: https://ico.org.uk/sitemap.xml via `url --direct`, filter loc by /news-and-blogs/2026/ and /enforcement/2026/ against lastmod. | 2026-10-12: S4: the 5 MB sitemap via `url --direct`, filtered on /news-and-blogs/2026/ and /enforcement/2026/, works; filter out the FOI regulatory-action pages that dominate the lastmod values. | 2026-10-13: the weekly health sweep timed out twice at 45 s on `ico-uk enforcement 10` (the recipe downloads the 5 MB sitemap, and a cold fetch can pass 45 s), floating a false needs-demote; standalone the recipe returned in 3 s once cached. probe_timeout 120 added so the probe gives the cold download the time it needs. | 2026-10-17 (2026-10-17T0256Z-intel): S2: `ico-uk enforcement 10` returns URLs without titles or dates; the date is only inferable from the /YYYY/MM/ path. | 2026-10-18 (S4): `ico-uk enforcement N` returns lastmod, year and month per URL; news items need the sitemap filtered on /news-and-blogs/2026/10/ via `url --direct`. | 2026-10-19 intel run S4: the sitemap (`url --direct https://ico.org.uk/sitemap.xml`) filtered on /news-and-blogs/2026/10/ returned no URLs in October; treat as a quiet fetch, not a failure. | 2026-10-22 (S4): recipe: `url --direct https://ico.org.uk/sitemap.xml` filtered on /action-weve-taken/enforcement/2026/10/ lists the reprimand pages; the reprimand PDFs are image-only (`pdf` reports no text), so render the pages after WebFetch saves the file. | 2026-10-27 (S4): no enforcement or news item inside the lookback; the sitemap recipe works (https://ico.org.uk/sitemap.xml, filter on /action-weve-taken/enforcement/2026/10/ and /media-centre/news-and-blogs/2026/10/). | 2026-11-01 (2026-11-01T0256Z-intel): the direct sitemap read, `extract` (served by the reader as a loading shell) and WebFetch all timed out in this container; the recipe worked on 2026-10-22 and 2026-10-27, so this is a transport timeout, not a dead source. Not demoted (a timeout never demotes); the health check keeps flagging needs-demote until the host answers again. | 2026-11-01 (2026-11-01T1312Z-audit): source_health read a loading shell at 11:24Z and an audit re-probe at 14:05Z got nothing back on the health_cmd recipe; with the 2026-11-01 intel fire's timeouts this is a transport outage of the host, not a dead source (the sitemap recipe read on 2026-10-22 and 2026-10-27). Not demoted; re-check at the next fire. | 2026-11-02 intel run (S4): bridge, extract, reader and WebFetch all returned 403 for ico.org.uk (host outage, same as 2026-11-01); WebSearch found no in-window notice. | 2026-11-03 (S4): 403 on every transport for the third consecutive run, so WebSearch is the only route to ICO notices; never demotes on a 403.

Cited in 6 entries

Citation cadence

Citation days per ISO week (14 weeks of coverage span, total 6).