@cookiecrumbs-eu/mcp 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +134 -0
- package/README.md +186 -0
- package/dist/cli/src/api.js +192 -0
- package/dist/cli/src/auth.js +106 -0
- package/dist/cli/src/commands/_shared.js +78 -0
- package/dist/cli/src/commands/alerts.js +85 -0
- package/dist/cli/src/commands/auth.js +92 -0
- package/dist/cli/src/commands/declaration.js +45 -0
- package/dist/cli/src/commands/diff.js +26 -0
- package/dist/cli/src/commands/domains.js +44 -0
- package/dist/cli/src/commands/export.js +136 -0
- package/dist/cli/src/commands/init.js +134 -0
- package/dist/cli/src/commands/install.js +77 -0
- package/dist/cli/src/commands/issues.js +61 -0
- package/dist/cli/src/commands/link.js +41 -0
- package/dist/cli/src/commands/logs.js +98 -0
- package/dist/cli/src/commands/open.js +45 -0
- package/dist/cli/src/commands/pull.js +89 -0
- package/dist/cli/src/commands/push.js +110 -0
- package/dist/cli/src/commands/scan.js +94 -0
- package/dist/cli/src/commands/schedule.js +97 -0
- package/dist/cli/src/commands/services.js +143 -0
- package/dist/cli/src/commands/sites.js +111 -0
- package/dist/cli/src/commands/status.js +90 -0
- package/dist/cli/src/commands/templates.js +133 -0
- package/dist/cli/src/commands/tokens.js +50 -0
- package/dist/cli/src/commands/usage.js +41 -0
- package/dist/cli/src/commands/versions.js +95 -0
- package/dist/cli/src/commands/webhooks.js +164 -0
- package/dist/cli/src/configpkg.js +10 -0
- package/dist/cli/src/diff.js +63 -0
- package/dist/cli/src/errors.js +20 -0
- package/dist/cli/src/frameworks.js +141 -0
- package/dist/cli/src/index.js +100 -0
- package/dist/cli/src/jobs.js +59 -0
- package/dist/cli/src/merge.js +38 -0
- package/dist/cli/src/output.js +112 -0
- package/dist/cli/src/project.js +269 -0
- package/dist/cli/src/util.js +122 -0
- package/dist/config/rules_reference.json +569 -0
- package/dist/config/src/canon.js +36 -0
- package/dist/config/src/declaration.js +38 -0
- package/dist/config/src/defaults.js +804 -0
- package/dist/config/src/export.js +130 -0
- package/dist/config/src/index.js +16 -0
- package/dist/config/src/lint.js +139 -0
- package/dist/config/src/regimes.js +62 -0
- package/dist/config/src/rules.js +90 -0
- package/dist/config/src/schema.js +323 -0
- package/dist/config/src/theme.js +147 -0
- package/dist/config/src/verify.js +51 -0
- package/dist/config/src/webhooks.js +309 -0
- package/dist/mcp/src/auth.js +40 -0
- package/dist/mcp/src/client.js +44 -0
- package/dist/mcp/src/diff.js +134 -0
- package/dist/mcp/src/index.js +25 -0
- package/dist/mcp/src/matrix.js +106 -0
- package/dist/mcp/src/server.js +171 -0
- package/dist/mcp/src/shared.js +147 -0
- package/dist/mcp/src/tools-config.js +943 -0
- package/dist/mcp/src/tools.js +650 -0
- package/package.json +66 -0
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"generated_note": "Citation knowledge base shared by the MCP server (rules_reference, check_first_layer, explain_classification) and the dashboard Issue detail page. Every `quote` in this file was read from the cited primary source; entries where the exact wording could not be verified carry `quote: null` and a `summary` written in our own words. Nothing here is legal advice.",
|
|
4
|
+
"topics": [
|
|
5
|
+
"prior_consent",
|
|
6
|
+
"consent_definition",
|
|
7
|
+
"reject_first_layer",
|
|
8
|
+
"pre_ticked",
|
|
9
|
+
"deceptive_design",
|
|
10
|
+
"withdrawal",
|
|
11
|
+
"refusal_symmetry",
|
|
12
|
+
"cookie_wall",
|
|
13
|
+
"consent_retention",
|
|
14
|
+
"essential_cookies",
|
|
15
|
+
"legal_basis",
|
|
16
|
+
"transparency",
|
|
17
|
+
"proof",
|
|
18
|
+
"analytics",
|
|
19
|
+
"tcf",
|
|
20
|
+
"us_optout",
|
|
21
|
+
"quebec",
|
|
22
|
+
"brazil",
|
|
23
|
+
"switzerland",
|
|
24
|
+
"uk_pecr",
|
|
25
|
+
"accessibility",
|
|
26
|
+
"consent_mode"
|
|
27
|
+
],
|
|
28
|
+
"rules": [
|
|
29
|
+
{
|
|
30
|
+
"id": "eprivacy_art_5_3",
|
|
31
|
+
"topic": "prior_consent",
|
|
32
|
+
"source": "Directive 2002/58/EC (ePrivacy Directive), Article 5(3), as substituted by Directive 2009/136/EC",
|
|
33
|
+
"source_url": "https://eur-lex.europa.eu/eli/dir/2002/58/oj",
|
|
34
|
+
"published": "2009-11-25",
|
|
35
|
+
"paragraph": "Art. 5(3)",
|
|
36
|
+
"quote": "Member States shall ensure that the storing of information, or the gaining of access to information already stored, in the terminal equipment of a subscriber or user is only allowed on condition that the subscriber or user concerned has given his or her consent, having been provided with clear and comprehensive information, in accordance with Directive 95/46/EC, inter alia, about the purposes of the processing. This shall not prevent any technical storage or access for the sole purpose of carrying out the transmission of a communication over an electronic communications network, or as strictly necessary in order for the provider of an information society service explicitly requested by the subscriber or user to provide the service.",
|
|
37
|
+
"summary": "Storing or reading anything on a visitor's device needs prior consent, except for transmission or what is strictly necessary for a service the visitor explicitly asked for.",
|
|
38
|
+
"applies_to": ["preconsent_tracker", "install_unverified", "necessary_missing", "necessary_not_locked", "fallback_disabled"]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "gdpr_art_4_11",
|
|
42
|
+
"topic": "consent_definition",
|
|
43
|
+
"source": "Regulation (EU) 2016/679 (GDPR), Article 4(11)",
|
|
44
|
+
"source_url": "https://eur-lex.europa.eu/eli/reg/2016/679/oj",
|
|
45
|
+
"published": "2016-04-27",
|
|
46
|
+
"paragraph": "Art. 4(11)",
|
|
47
|
+
"quote": "‘consent’ of the data subject means any freely given, specific, informed and unambiguous indication of the data subject's wishes by which he or she, by a statement or by a clear affirmative action, signifies agreement to the processing of personal data relating to him or her;",
|
|
48
|
+
"summary": "Consent has to be a freely given, specific, informed and unambiguous act. Silence or a pre-set switch is not an act.",
|
|
49
|
+
"applies_to": ["default_on_non_necessary", "preconsent_tracker", "reject_not_layer1"]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "gdpr_art_6_1_a",
|
|
53
|
+
"topic": "legal_basis",
|
|
54
|
+
"source": "Regulation (EU) 2016/679 (GDPR), Article 6(1)(a)",
|
|
55
|
+
"source_url": "https://eur-lex.europa.eu/eli/reg/2016/679/oj",
|
|
56
|
+
"published": "2016-04-27",
|
|
57
|
+
"paragraph": "Art. 6(1)(a)",
|
|
58
|
+
"quote": "the data subject has given consent to the processing of his or her personal data for one or more specific purposes;",
|
|
59
|
+
"summary": "Consent is one of the six lawful bases for processing; it is the one the ePrivacy Directive requires for non-essential storage and access.",
|
|
60
|
+
"applies_to": ["preconsent_tracker", "unclassified_tracker"]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "gdpr_art_7_1",
|
|
64
|
+
"topic": "proof",
|
|
65
|
+
"source": "Regulation (EU) 2016/679 (GDPR), Article 7(1)",
|
|
66
|
+
"source_url": "https://eur-lex.europa.eu/eli/reg/2016/679/oj",
|
|
67
|
+
"published": "2016-04-27",
|
|
68
|
+
"paragraph": "Art. 7(1)",
|
|
69
|
+
"quote": "Where processing is based on consent, the controller shall be able to demonstrate that the data subject has consented to processing of his or her personal data.",
|
|
70
|
+
"summary": "The burden of proof sits with the controller: it must be able to show that consent was given, and what the visitor was shown at the time.",
|
|
71
|
+
"applies_to": ["no_screenshots", "install_unverified", "version_missing_texts"]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "gdpr_art_7_3",
|
|
75
|
+
"topic": "withdrawal",
|
|
76
|
+
"source": "Regulation (EU) 2016/679 (GDPR), Article 7(3)",
|
|
77
|
+
"source_url": "https://eur-lex.europa.eu/eli/reg/2016/679/oj",
|
|
78
|
+
"published": "2016-04-27",
|
|
79
|
+
"paragraph": "Art. 7(3)",
|
|
80
|
+
"quote": "The data subject shall have the right to withdraw his or her consent at any time. The withdrawal of consent shall not affect the lawfulness of processing based on consent before its withdrawal. Prior to giving consent, the data subject shall be informed thereof. It shall be as easy to withdraw as to give consent.",
|
|
81
|
+
"summary": "Withdrawal must be possible at any time and must be as easy as giving consent — which is why a permanent re-open control is required.",
|
|
82
|
+
"applies_to": ["reopen_disabled", "headless_layout"]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "gdpr_recital_32",
|
|
86
|
+
"topic": "pre_ticked",
|
|
87
|
+
"source": "Regulation (EU) 2016/679 (GDPR), Recital 32",
|
|
88
|
+
"source_url": "https://eur-lex.europa.eu/eli/reg/2016/679/oj",
|
|
89
|
+
"published": "2016-04-27",
|
|
90
|
+
"paragraph": "Recital 32",
|
|
91
|
+
"quote": "Consent should be given by a clear affirmative act establishing a freely given, specific, informed and unambiguous indication of the data subject's agreement to the processing of personal data relating to him or her, such as by a written statement, including by electronic means, or an oral statement. This could include ticking a box when visiting an internet website, choosing technical settings for information society services or another statement or conduct which clearly indicates in this context the data subject's acceptance of the proposed processing of his or her personal data. Silence, pre-ticked boxes or inactivity should not therefore constitute consent.",
|
|
92
|
+
"summary": "Silence, pre-ticked boxes and inactivity are explicitly named as things that do not amount to consent.",
|
|
93
|
+
"applies_to": ["default_on_non_necessary", "locked_non_necessary"]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "edpb_taskforce_2023_p7",
|
|
97
|
+
"topic": "prior_consent",
|
|
98
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
99
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
100
|
+
"published": "2023-01-17",
|
|
101
|
+
"paragraph": "para. 7",
|
|
102
|
+
"quote": "As a preliminary remark, the task force members recalled that by default, no cookies which require consent can be set without a consent and that consent must be expressed by a positive action on the part of the user.",
|
|
103
|
+
"summary": "Nothing that needs consent may be set before the visitor acts. No action means no consent.",
|
|
104
|
+
"applies_to": ["preconsent_tracker", "fallback_disabled", "regime_unknown_override", "default_on_non_necessary"]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "edpb_taskforce_2023_p8",
|
|
108
|
+
"topic": "reject_first_layer",
|
|
109
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
110
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
111
|
+
"published": "2023-01-17",
|
|
112
|
+
"paragraph": "para. 8",
|
|
113
|
+
"quote": "When authorities were asked whether they would consider that a banner which does not provide for accept and refuse/reject/not consent options on any layer with a consent button is an infringement of the ePrivacy Directive, a vast majority of authorities considered that the absence of refuse/reject/not consent options on any layer with a consent button of the cookie consent banner is not in line with the requirements for a valid consent and thus constitutes an infringement.",
|
|
114
|
+
"summary": "A layer that carries an accept button and no refuse option is, for a vast majority of the supervisory authorities, an infringement.",
|
|
115
|
+
"applies_to": ["reject_not_layer1", "headless_layout"]
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"id": "edpb_taskforce_2023_p10",
|
|
119
|
+
"topic": "pre_ticked",
|
|
120
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
121
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
122
|
+
"published": "2023-01-17",
|
|
123
|
+
"paragraph": "para. 10",
|
|
124
|
+
"quote": "The taskforce members confirmed that pre-ticked boxes to opt-in do not lead to valid consent as referred to either in the GDPR (see in particular recital 32 “Silence, pre-ticked boxes or inactivity should not therefore constitute consent.”) or in Article 5(3) of the ePrivacy Directive.",
|
|
125
|
+
"summary": "Pre-ticked opt-in boxes — including a category switch that starts on — never produce valid consent.",
|
|
126
|
+
"applies_to": ["default_on_non_necessary", "locked_non_necessary"]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "edpb_taskforce_2023_p13",
|
|
130
|
+
"topic": "deceptive_design",
|
|
131
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
132
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
133
|
+
"published": "2023-01-17",
|
|
134
|
+
"paragraph": "para. 13",
|
|
135
|
+
"quote": "The members agreed that for the consent to be valid, the user should be able to understand what they consent to and how to do so. In order for a valid consent to be freely given, the taskforce members agreed that in any case a website owner must not design cookie banners in a way that gives users the impression that they have to give a consent to access the website content, nor that clearly pushes the user to give consent (one way could be on the contrary to allow the continuation of the navigation without cookies from the first level in particular for example).",
|
|
136
|
+
"summary": "A banner must not suggest that consent is compulsory to read the site, and must not push the visitor towards accepting.",
|
|
137
|
+
"applies_to": ["reject_not_layer1", "short_body", "missing_text", "contrast_button"]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "edpb_taskforce_2023_p14",
|
|
141
|
+
"topic": "deceptive_design",
|
|
142
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
143
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
144
|
+
"published": "2023-01-17",
|
|
145
|
+
"paragraph": "para. 14",
|
|
146
|
+
"quote": "The taskforce members agreed that the following examples do not lead to valid consents (non-exhaustive list): - the only alternative action offered (other than granting consent) consists of a link behind wording such as ‘refuse’ or ‘continue without accepting’ embedded in a paragraph of text in the cookie banner, in the absence of sufficient visual support to draw an average user’s attention to this alternative action; - the only alternative action offered (other than granting consent) consists of a link behind wording such as ‘refuse’ or ‘continue without accepting’ placed outside the cookie banner where the buttons to accept cookies are presented, in the absence of sufficient visual support to draw the users’ attention to this alternative action outside the frame;",
|
|
147
|
+
"summary": "A refuse option hidden as text inside a paragraph, or placed outside the banner, is not a valid alternative to accepting.",
|
|
148
|
+
"applies_to": ["reject_not_layer1", "contrast_text", "implied_dismiss_text_missing"]
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "edpb_taskforce_2023_p17",
|
|
152
|
+
"topic": "deceptive_design",
|
|
153
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
154
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
155
|
+
"published": "2023-01-17",
|
|
156
|
+
"paragraph": "para. 17",
|
|
157
|
+
"quote": "The taskforce members agreed that a general banner standard concerning colour and/or contrast cannot be imposed on data controllers. In order to assess the conformity of a banner, a case-by-case verification must be carried out in order to check that the contrast and colours used are not obviously misleading for the users and do not result in an unintended and, as such, invalid consent from them.",
|
|
158
|
+
"summary": "There is no fixed colour standard, but colours and contrast must not mislead a visitor into an unintended consent — which is why we compare the Accept and Reject styling rather than judge either alone.",
|
|
159
|
+
"applies_to": ["contrast_button", "contrast_button_bg", "contrast_text"]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"id": "edpb_taskforce_2023_p18",
|
|
163
|
+
"topic": "deceptive_design",
|
|
164
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
165
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
166
|
+
"published": "2023-01-17",
|
|
167
|
+
"paragraph": "para. 18",
|
|
168
|
+
"quote": "Based on concrete examples, the taskforce members took the view that at least this practice could be manifestly misleading for users: - an alternative action is offered (other than granting consent) in the form of a button where the contrast between the text and the button background is so minimal that the text is unreadable to virtually any user.",
|
|
169
|
+
"summary": "A Reject button whose label is unreadable against its own background is called out as manifestly misleading.",
|
|
170
|
+
"applies_to": ["contrast_button", "contrast_button_bg", "contrast_text", "a11y_violation"]
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"id": "edpb_taskforce_2023_p24",
|
|
174
|
+
"topic": "legal_basis",
|
|
175
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
176
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
177
|
+
"published": "2023-01-17",
|
|
178
|
+
"paragraph": "para. 24",
|
|
179
|
+
"quote": "In this regard, the taskforce members took the view that non-compliance found concerning Art. 5 (3) in the ePrivacy directive (in particular when no valid consent is obtained where required), means that the subsequent processing cannot be compliant with the GDPR. Also, the TF members confirmed that the legal basis for the placement/reading of cookies pursuant to Article 5 (3) cannot be the legitimate interests of the controller.",
|
|
180
|
+
"summary": "Legitimate interest cannot be used as the basis for placing or reading cookies, and an invalid consent taints everything processed afterwards.",
|
|
181
|
+
"applies_to": ["preconsent_tracker", "unclassified_tracker"]
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"id": "edpb_taskforce_2023_p26",
|
|
185
|
+
"topic": "essential_cookies",
|
|
186
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
187
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
188
|
+
"published": "2023-01-17",
|
|
189
|
+
"paragraph": "para. 26",
|
|
190
|
+
"quote": "It appears that some controllers classify as “essential” or “strictly necessary” cookies and processing operations which use personal data and serve purposes which would not be considered as “strictly necessary” within the meaning of Article 5(3) ePrivacy Directive or the ordinary meaning of “strictly necessary” or “essential” under the GDPR.",
|
|
191
|
+
"summary": "Putting a tracker in the necessary category does not make it necessary; the label has to match the Article 5(3) meaning.",
|
|
192
|
+
"applies_to": ["necessary_not_locked", "locked_non_necessary", "unclassified_tracker"]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"id": "edpb_taskforce_2023_p27",
|
|
196
|
+
"topic": "essential_cookies",
|
|
197
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
198
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
199
|
+
"published": "2023-01-17",
|
|
200
|
+
"paragraph": "para. 27",
|
|
201
|
+
"quote": "Taskforce members agreed that the assessment of cookies to determine which ones are essential raises practical difficulties, in particular due to the fact that the features of cookies change regularly, which prevents the establishment of a stable and reliable list of such essential cookies.",
|
|
202
|
+
"summary": "No fixed list of essential cookies exists, because what a cookie does changes over time — the assessment has to be re-done as the site changes.",
|
|
203
|
+
"applies_to": ["unclassified_tracker", "declaration_stale"]
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "edpb_taskforce_2023_p28",
|
|
207
|
+
"topic": "essential_cookies",
|
|
208
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
209
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
210
|
+
"published": "2023-01-17",
|
|
211
|
+
"paragraph": "para. 28",
|
|
212
|
+
"quote": "The existence of tools to establish the list of cookies used by a website has been discussed, as well as the responsibility of website owners to maintain such lists, and to provide them to the competent authorities where requested and to demonstrate the « essentiality » of the cookies listed.",
|
|
213
|
+
"summary": "The site owner is responsible for keeping the cookie list current and for being able to justify every entry it calls essential.",
|
|
214
|
+
"applies_to": ["declaration_stale", "unclassified_tracker", "block_unknown_category"]
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"id": "edpb_taskforce_2023_p30",
|
|
218
|
+
"topic": "essential_cookies",
|
|
219
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
220
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
221
|
+
"published": "2023-01-17",
|
|
222
|
+
"paragraph": "para. 30",
|
|
223
|
+
"quote": "The opinion n°04/2012 on Cookie Consent Exemption of WP 29 has also been recalled in relation to the criteria mentioned to assess which cookies are essential, and in particular the fact that cookies allowing website owners to retain the preferences expressed by users, regarding a service, should be deemed essential.",
|
|
224
|
+
"summary": "A cookie that stores the visitor's own consent choice is itself essential — which is why the consent cookie is never gated.",
|
|
225
|
+
"applies_to": ["necessary_missing", "necessary_not_locked"]
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"id": "edpb_taskforce_2023_p32",
|
|
229
|
+
"topic": "withdrawal",
|
|
230
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
231
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
232
|
+
"published": "2023-01-17",
|
|
233
|
+
"paragraph": "para. 32",
|
|
234
|
+
"quote": "Website owners should put in place easily accessible solutions allowing users to withdraw their consent at any time, such as an icon (small hovering and permanently visible icon) or a link placed on a visible and standardized place.",
|
|
235
|
+
"summary": "A permanently reachable control — a floating icon or a link in a standard place — is the expected way to let people withdraw.",
|
|
236
|
+
"applies_to": ["reopen_disabled", "headless_layout"]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"id": "edpb_taskforce_2023_p34",
|
|
240
|
+
"topic": "withdrawal",
|
|
241
|
+
"source": "EDPB, Report of the work undertaken by the Cookie Banner Taskforce, adopted on 17 January 2023",
|
|
242
|
+
"source_url": "https://www.edpb.europa.eu/system/files/2023-01/edpb_20230118_report_cookie_banner_taskforce_en.pdf",
|
|
243
|
+
"published": "2023-01-17",
|
|
244
|
+
"paragraph": "para. 34",
|
|
245
|
+
"quote": "In addition to the requirements for the collection of consent to be valid in accordance with the GDPR and under Article 5(3) ePrivacy Directive, three additional cumulative conditions are mandatory (i) the possibility to withdraw consent, (ii) the ability to withdraw consent at any time, (iii) withdrawal of consent must be as easy as to give consent.",
|
|
246
|
+
"summary": "Three cumulative conditions for withdrawal: it must be possible, available at any time, and as easy as consenting.",
|
|
247
|
+
"applies_to": ["reopen_disabled"]
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "edpb_guidelines_05_2020",
|
|
251
|
+
"topic": "consent_definition",
|
|
252
|
+
"source": "EDPB, Guidelines 05/2020 on consent under Regulation 2016/679, version 1.1",
|
|
253
|
+
"source_url": "https://www.edpb.europa.eu/system/files/documents/files/file1/edpb_guidelines_202005_consent_en.pdf",
|
|
254
|
+
"published": "2020-05-04",
|
|
255
|
+
"paragraph": null,
|
|
256
|
+
"quote": null,
|
|
257
|
+
"summary": "The EDPB's general guidelines on consent set out what freely given, specific, informed and unambiguous mean in practice, including that consent must be separable from other terms, that scrolling or continued browsing is not an unambiguous act, and that the controller must be able to show what the person was told. We cite it as the general framework behind the taskforce report; we do not quote it here because the exact wording of the relevant passages was not verified against the PDF.",
|
|
258
|
+
"applies_to": ["default_on_non_necessary", "preconsent_tracker", "version_missing_texts", "missing_text"]
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"id": "cnil_reco_2026_refusal_same_simplicity",
|
|
262
|
+
"topic": "refusal_symmetry",
|
|
263
|
+
"source": "CNIL, Recommandation proposant des modalités pratiques de mise en conformité en cas de recours aux « cookies et autres traceurs » — version consolidée (délibérations n° 2020-092 and n° 2025-131), § 2.3 « S'agissant des modalités du refus »",
|
|
264
|
+
"source_url": "https://www.cnil.fr/sites/default/files/2026-01/recommandation_cookies_consolidee.pdf",
|
|
265
|
+
"published": "2026-01-16",
|
|
266
|
+
"paragraph": "§ 2.3",
|
|
267
|
+
"quote": "Le responsable de traitement doit offrir aux utilisateurs tant la possibilité d’accepter que de refuser les opérations de lecture et/ou d’écriture avec le même degré de simplicité.",
|
|
268
|
+
"summary": "Accepting and refusing must be offered with the same degree of simplicity.",
|
|
269
|
+
"applies_to": ["reject_not_layer1", "contrast_button"]
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"id": "cnil_reco_2026_refusal_same_screen",
|
|
273
|
+
"topic": "refusal_symmetry",
|
|
274
|
+
"source": "CNIL, Recommandation « cookies et autres traceurs » — version consolidée, § 2.3 « S'agissant des modalités du refus »",
|
|
275
|
+
"source_url": "https://www.cnil.fr/sites/default/files/2026-01/recommandation_cookies_consolidee.pdf",
|
|
276
|
+
"published": "2026-01-16",
|
|
277
|
+
"paragraph": "§ 2.3",
|
|
278
|
+
"quote": "Ainsi, la Commission recommande fortement que le mécanisme permettant d’exprimer un refus de consentir aux opérations de lecture et/ou d’écriture soit accessible sur le même écran et avec la même facilité que le mécanisme permettant d’exprimer un consentement.",
|
|
279
|
+
"summary": "The refusal control should sit on the same screen, and be as easy to use, as the consent control — one click to accept must not be answered by several clicks to refuse.",
|
|
280
|
+
"applies_to": ["reject_not_layer1"]
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"id": "cnil_reco_2026_global_buttons",
|
|
284
|
+
"topic": "refusal_symmetry",
|
|
285
|
+
"source": "CNIL, Recommandation « cookies et autres traceurs » — version consolidée, § 2.3",
|
|
286
|
+
"source_url": "https://www.cnil.fr/sites/default/files/2026-01/recommandation_cookies_consolidee.pdf",
|
|
287
|
+
"published": "2026-01-16",
|
|
288
|
+
"paragraph": "§ 2.3",
|
|
289
|
+
"quote": "Par exemple, au stade du premier niveau d’information, les utilisateurs peuvent avoir le choix entre deux boutons présentés au même niveau et sur le même format, sur lesquels sont inscrits respectivement « tout accepter » et « tout refuser », « autoriser » et « interdire », ou « consentir » et « ne pas consentir », ou toute autre formulation équivalente et suffisamment claire.",
|
|
290
|
+
"summary": "Two buttons on the first layer, at the same level and in the same format — Accept all and Reject all — is the pattern the CNIL describes as simple and clear.",
|
|
291
|
+
"applies_to": ["reject_not_layer1", "contrast_button", "contrast_button_bg"]
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"id": "cnil_reco_2026_deceptive_design",
|
|
295
|
+
"topic": "deceptive_design",
|
|
296
|
+
"source": "CNIL, Recommandation « cookies et autres traceurs » — version consolidée, § 2.3",
|
|
297
|
+
"source_url": "https://www.cnil.fr/sites/default/files/2026-01/recommandation_cookies_consolidee.pdf",
|
|
298
|
+
"published": "2026-01-16",
|
|
299
|
+
"paragraph": "§ 2.3",
|
|
300
|
+
"quote": "Afin de ne pas induire en erreur les utilisateurs, la Commission recommande que les responsables de traitement s’assurent que les interfaces de recueil des choix n’intègrent pas de pratiques de design potentiellement trompeuses laissant penser aux utilisateurs que leur consentement est obligatoire ou qui mettent visuellement plus en valeur un choix plutôt qu’un autre. Il est recommandé d’utiliser des boutons et une police d’écriture de même taille, offrant la même facilité de lecture, et mis en évidence de manière identique.",
|
|
301
|
+
"summary": "Buttons should be the same size, equally readable and equally emphasised; nothing may suggest that consent is compulsory.",
|
|
302
|
+
"applies_to": ["contrast_button", "contrast_button_bg", "contrast_text", "a11y_violation"]
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"id": "cnil_reco_2026_close_window_refusal",
|
|
306
|
+
"topic": "refusal_symmetry",
|
|
307
|
+
"source": "CNIL, Recommandation « cookies et autres traceurs » — version consolidée, § 2.3",
|
|
308
|
+
"source_url": "https://www.cnil.fr/sites/default/files/2026-01/recommandation_cookies_consolidee.pdf",
|
|
309
|
+
"published": "2026-01-16",
|
|
310
|
+
"paragraph": "§ 2.3",
|
|
311
|
+
"quote": "En particulier, lorsque le refus peut être manifesté par la simple fermeture de la fenêtre de recueil du consentement ou encore par l’absence d’interaction avec celle-ci pendant un certain laps de temps, cette possibilité doit être clairement indiquée aux utilisateurs sur cette fenêtre.",
|
|
312
|
+
"summary": "If closing the banner or ignoring it counts as a refusal, the banner itself has to say so.",
|
|
313
|
+
"applies_to": ["implied_dismiss_text_missing", "missing_text"]
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"id": "cnil_reco_2026_retention_six_months",
|
|
317
|
+
"topic": "consent_retention",
|
|
318
|
+
"source": "CNIL, Recommandation « cookies et autres traceurs » — version consolidée, § 2.3 « S'agissant de la conservation des choix »",
|
|
319
|
+
"source_url": "https://www.cnil.fr/sites/default/files/2026-01/recommandation_cookies_consolidee.pdf",
|
|
320
|
+
"published": "2026-01-16",
|
|
321
|
+
"paragraph": "§ 2.3",
|
|
322
|
+
"quote": "Au regard de ces éléments, la Commission considère, de manière générale, que conserver ces choix (tant le consentement que le refus) pendant une durée de 6 mois constitue une bonne pratique de la part des éditeurs.",
|
|
323
|
+
"summary": "Keeping both the consent and the refusal for about six months before asking again is described as good practice.",
|
|
324
|
+
"applies_to": ["fallback_disabled"]
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"id": "cnil_reco_2026_withdrawal_icon",
|
|
328
|
+
"topic": "withdrawal",
|
|
329
|
+
"source": "CNIL, Recommandation « cookies et autres traceurs » — version consolidée, § 3 « Retrait et gestion du consentement »",
|
|
330
|
+
"source_url": "https://www.cnil.fr/sites/default/files/2026-01/recommandation_cookies_consolidee.pdf",
|
|
331
|
+
"published": "2026-01-16",
|
|
332
|
+
"paragraph": "§ 3",
|
|
333
|
+
"quote": "L’éditeur d’un site web peut également fournir aux utilisateurs un module de paramétrage accessible sur toutes les pages du site au moyen d’une icône « cookie », située par exemple en bas à gauche de l’écran, leur permettant d’accéder au mécanisme de gestion et de retrait de leur consentement.",
|
|
334
|
+
"summary": "A settings module reachable from every page — for example through a persistent cookie icon — is the CNIL's illustration of an accessible withdrawal mechanism.",
|
|
335
|
+
"applies_to": ["reopen_disabled", "headless_layout"]
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"id": "cnil_cookie_wall_definition",
|
|
339
|
+
"topic": "cookie_wall",
|
|
340
|
+
"source": "CNIL, « Cookie walls » : la CNIL publie des premiers critères d'évaluation",
|
|
341
|
+
"source_url": "https://www.cnil.fr/fr/cookie-walls-la-cnil-publie-des-premiers-criteres-devaluation",
|
|
342
|
+
"published": "2022-05-16",
|
|
343
|
+
"paragraph": null,
|
|
344
|
+
"quote": "L’expression « mur de traceur », ou « cookie wall » en anglais, désigne le fait de conditionner l’accès à un service à l’acceptation, par l’internaute, du dépôt de certains traceurs sur son terminal (ordinateur, smartphone, etc.).",
|
|
345
|
+
"summary": "A cookie wall makes access to a service conditional on accepting trackers.",
|
|
346
|
+
"applies_to": ["reject_not_layer1"]
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"id": "cnil_cookie_wall_legality",
|
|
350
|
+
"topic": "cookie_wall",
|
|
351
|
+
"source": "CNIL, « Cookie walls » : la CNIL publie des premiers critères d'évaluation",
|
|
352
|
+
"source_url": "https://www.cnil.fr/fr/cookie-walls-la-cnil-publie-des-premiers-criteres-devaluation",
|
|
353
|
+
"published": "2022-05-16",
|
|
354
|
+
"paragraph": null,
|
|
355
|
+
"quote": "Si l’exigence d’un consentement « libre » n’entraîne pas une interdiction générale de la pratique des cookie walls, leur légalité doit être appréciée en tenant notamment compte de l’existence d’alternative(s) réelle(s) et satisfaisante(s) proposée(s) en cas de refus des traceurs.",
|
|
356
|
+
"summary": "Cookie walls are not banned outright, but their lawfulness turns case by case on whether a real and satisfactory alternative exists for someone who refuses. CookieCrumbs never renders a wall itself; this entry exists so the question is answered from the source rather than from opinion.",
|
|
357
|
+
"applies_to": ["reject_not_layer1"]
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"id": "ico_sat_statistical_purposes",
|
|
361
|
+
"topic": "analytics",
|
|
362
|
+
"source": "ICO, Guidance on the use of storage and access technologies — What are the exceptions? (statistical purposes exception)",
|
|
363
|
+
"source_url": "https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guidance-on-the-use-of-storage-and-access-technologies/what-are-the-exceptions/",
|
|
364
|
+
"published": "2026-04-01",
|
|
365
|
+
"paragraph": "Statistical purposes exception",
|
|
366
|
+
"quote": "The statistical purposes exception enables you to understand how visitors interact with your service. Provided your use of storage and access technologies for this purpose is in line with the exception, you don’t need to get consent under PECR.",
|
|
367
|
+
"summary": "Under PECR as amended by the Data (Use and Access) Act 2025 there is a statistical-purposes exception, so some first-party measurement can run without consent in the UK — but only inside the exception's limits.",
|
|
368
|
+
"applies_to": ["preconsent_tracker", "regime_unknown_override"]
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"id": "ico_sat_statistical_conditions",
|
|
372
|
+
"topic": "analytics",
|
|
373
|
+
"source": "ICO, Guidance on the use of storage and access technologies — What are the exceptions?",
|
|
374
|
+
"source_url": "https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guidance-on-the-use-of-storage-and-access-technologies/what-are-the-exceptions/",
|
|
375
|
+
"published": "2026-04-01",
|
|
376
|
+
"paragraph": "Statistical purposes exception",
|
|
377
|
+
"quote": "To rely on the exception, you must only use the storage and access technologies for the purpose of improving your service or website, and not for any other purposes. This is the case whether you store or access information for this purpose, or whether you use a third party, such as an analytics provider to do this for you. You must ensure that the information resulting from the storage or access is aggregate statistical information that you cannot use to identify people.",
|
|
378
|
+
"summary": "The exception only holds if the measurement is used solely to improve the service and produces aggregate information that cannot identify people — using a third-party analytics provider does not change that test.",
|
|
379
|
+
"applies_to": ["preconsent_tracker", "unclassified_tracker"]
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"id": "ico_sat_statistical_not_tracking",
|
|
383
|
+
"topic": "analytics",
|
|
384
|
+
"source": "ICO, Guidance on the use of storage and access technologies — What are the exceptions?",
|
|
385
|
+
"source_url": "https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guidance-on-the-use-of-storage-and-access-technologies/what-are-the-exceptions/",
|
|
386
|
+
"published": "2026-04-01",
|
|
387
|
+
"paragraph": "Using web analytics tools to monitor or track people",
|
|
388
|
+
"quote": "The statistical purposes exception does not allow you to monitor or track individual visitors to your service.",
|
|
389
|
+
"summary": "Anything that follows an individual — session recording, conversion IDs shared with advertising partners, profiling by IP or pages visited — falls outside the exception and needs consent.",
|
|
390
|
+
"applies_to": ["preconsent_tracker", "consent_mode_mismatch"]
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"id": "ico_pecr_anonymous_data",
|
|
394
|
+
"topic": "analytics",
|
|
395
|
+
"source": "ICO, Guide to PECR — Cookies and similar technologies",
|
|
396
|
+
"source_url": "https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guide-to-pecr/cookies-and-similar-technologies/",
|
|
397
|
+
"published": "2019-07-03",
|
|
398
|
+
"paragraph": "Do the rules still apply if the data is anonymous?",
|
|
399
|
+
"quote": "Yes. Although cookies that process personal data give rise to greater privacy and security risks than those that process anonymous data, PECR apply to all cookies.",
|
|
400
|
+
"summary": "PECR is about storage on the device, not about whether the data is personal — \"it's anonymous analytics\" is not by itself an answer.",
|
|
401
|
+
"applies_to": ["preconsent_tracker"]
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"id": "ico_pecr_strictly_necessary",
|
|
405
|
+
"topic": "essential_cookies",
|
|
406
|
+
"source": "ICO, Guide to PECR — Cookies and similar technologies",
|
|
407
|
+
"source_url": "https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guide-to-pecr/cookies-and-similar-technologies/",
|
|
408
|
+
"published": "2019-07-03",
|
|
409
|
+
"paragraph": "Are there any exemptions?",
|
|
410
|
+
"quote": "the cookie is strictly necessary to provide an ‘information society service’ (eg a service over the internet) requested by the subscriber or user. Note that it must be essential to fulfil their request – cookies that are helpful or convenient but not essential, or that are only essential for your own purposes, will still require consent.",
|
|
411
|
+
"summary": "Convenient is not essential, and essential-for-the-operator is not essential-for-the-visitor.",
|
|
412
|
+
"applies_to": ["necessary_not_locked", "locked_non_necessary", "unclassified_tracker"]
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"id": "tcf_v5_ui_default_off",
|
|
416
|
+
"topic": "tcf",
|
|
417
|
+
"source": "IAB Europe, Transparency & Consent Framework Policies, Version 2026-05-29.5.0.b, Appendix B (User Interface Requirements), Policy C(d)",
|
|
418
|
+
"source_url": "https://iabeurope.eu/wp-content/uploads/TCF-Policies-TransparencyConsentFramework_Policies_Version-2026-05-29.5.0.b.docx.pdf",
|
|
419
|
+
"published": "2026-05-29",
|
|
420
|
+
"paragraph": "Appendix B, Policy C(d)",
|
|
421
|
+
"quote": "When a user accesses a layer, which will be a secondary layer when using a layered approach, allowing them to make granular and specific consent choices with respect to each Purpose, under Policy C(c)(III), and/or to make granular and specific opt-in choices with respect to each Special Feature under Policy C(c)(IV) the default choice must be \"no consent\", \"no opt-in\" or \"off\".",
|
|
422
|
+
"summary": "In a TCF UI every purpose and special feature toggle must start off.",
|
|
423
|
+
"applies_to": ["default_on_non_necessary", "locked_non_necessary"]
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"id": "tcf_v5_ui_resurface",
|
|
427
|
+
"topic": "tcf",
|
|
428
|
+
"source": "IAB Europe, Transparency & Consent Framework Policies, Version 2026-05-29.5.0.b, Appendix B, Policy C(f)",
|
|
429
|
+
"source_url": "https://iabeurope.eu/wp-content/uploads/TCF-Policies-TransparencyConsentFramework_Policies_Version-2026-05-29.5.0.b.docx.pdf",
|
|
430
|
+
"published": "2026-05-29",
|
|
431
|
+
"paragraph": "Appendix B, Policy C(f)",
|
|
432
|
+
"quote": "A user must be able to resurface the Framework UI from an easily accessible link or call to action, such as a floating icon or a footer link available on each webpage of the Publisher's website, or from the top-level settings of the Publisher's app as to allow them to withdraw their consent as easily as it was to give it.",
|
|
433
|
+
"summary": "A TCF CMP must be re-openable from every page, and if the first layer offered a Consent to all, the re-opened UI must offer an equivalent Withdraw consent to all.",
|
|
434
|
+
"applies_to": ["reopen_disabled", "headless_layout"]
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"id": "tcf_v5_ui_contrast",
|
|
438
|
+
"topic": "tcf",
|
|
439
|
+
"source": "IAB Europe, Transparency & Consent Framework Policies, Version 2026-05-29.5.0.b, Appendix B, Policy C(g)",
|
|
440
|
+
"source_url": "https://iabeurope.eu/wp-content/uploads/TCF-Policies-TransparencyConsentFramework_Policies_Version-2026-05-29.5.0.b.docx.pdf",
|
|
441
|
+
"published": "2026-05-29",
|
|
442
|
+
"paragraph": "Appendix B, Policy C(g)",
|
|
443
|
+
"quote": "Calls to action in a Framework UI must not be invisible, illegible, or appear disabled. While calls to action do not need to be identical, to ensure they are clearly visible, they must have matching text treatment (font, font size, font style) and, for the text of each, a minimum contrast ratio of 5 to 1.",
|
|
444
|
+
"summary": "TCF sets a hard floor: matching text treatment on the two primary calls to action and at least 5:1 text contrast — stricter than WCAG AA's 4.5:1.",
|
|
445
|
+
"applies_to": ["contrast_button", "contrast_text", "a11y_violation"]
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"id": "qc_law25_s8_1",
|
|
449
|
+
"topic": "quebec",
|
|
450
|
+
"source": "Act respecting the protection of personal information in the private sector (Quebec), CQLR c P-39.1, section 8.1 (added by 2021, c. 25 — Law 25)",
|
|
451
|
+
"source_url": "https://www.legisquebec.gouv.qc.ca/en/document/cs/P-39.1",
|
|
452
|
+
"published": "2023-09-22",
|
|
453
|
+
"paragraph": "s. 8.1",
|
|
454
|
+
"quote": "In addition to the information that must be provided in accordance with section 8, any person who collects personal information from the person concerned using technology that includes functions allowing the person concerned to be identified, located or profiled must first inform the person (1) of the use of such technology; and (2) of the means available to activate the functions that allow a person to be identified, located or profiled.",
|
|
455
|
+
"summary": "Technology that can identify, locate or profile has to be disclosed first, together with the means to activate it — which implies it is off until the person turns it on.",
|
|
456
|
+
"applies_to": ["qc_settings_text_missing", "default_on_non_necessary", "missing_text"]
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"id": "qc_law25_s9_1",
|
|
460
|
+
"topic": "quebec",
|
|
461
|
+
"source": "Act respecting the protection of personal information in the private sector (Quebec), CQLR c P-39.1, section 9.1 (added by 2021, c. 25 — Law 25)",
|
|
462
|
+
"source_url": "https://www.legisquebec.gouv.qc.ca/en/document/cs/P-39.1",
|
|
463
|
+
"published": "2023-09-22",
|
|
464
|
+
"paragraph": "s. 9.1",
|
|
465
|
+
"quote": "Any person carrying on an enterprise who collects personal information when offering to the public a technological product or service having privacy settings must ensure that those settings provide the highest level of confidentiality by default, without any intervention by the person concerned. The first paragraph does not apply to privacy settings for browser cookies.",
|
|
466
|
+
"summary": "Highest confidentiality by default — note the express carve-out for browser cookie settings, which is why the Quebec regime rests on s. 8.1 rather than on s. 9.1 for cookies.",
|
|
467
|
+
"applies_to": ["qc_settings_text_missing", "default_on_non_necessary"]
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"id": "ccpa_7025_b_signal_format",
|
|
471
|
+
"topic": "us_optout",
|
|
472
|
+
"source": "California Code of Regulations, Title 11, § 7025(b) — Opt-Out Preference Signals",
|
|
473
|
+
"source_url": "https://www.law.cornell.edu/regulations/california/11-CCR-7025",
|
|
474
|
+
"published": "2023-03-29",
|
|
475
|
+
"paragraph": "§ 7025(b)",
|
|
476
|
+
"quote": "A business that sells or shares personal information shall process any opt-out preference signal that meets the following requirements as a valid request to opt-out of sale/sharing: (1) The signal shall be in a format commonly used and recognized by businesses. An example would be an HTTP header field or JavaScript object.",
|
|
477
|
+
"summary": "Global Privacy Control — the Sec-GPC header and navigator.globalPrivacyControl — is a valid opt-out request that has to be processed.",
|
|
478
|
+
"applies_to": ["us_link_text_missing", "consent_mode_mismatch"]
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"id": "ccpa_7025_f_frictionless",
|
|
482
|
+
"topic": "us_optout",
|
|
483
|
+
"source": "California Code of Regulations, Title 11, § 7025(f) — processing an opt-out preference signal in a frictionless manner",
|
|
484
|
+
"source_url": "https://www.law.cornell.edu/regulations/california/11-CCR-7025",
|
|
485
|
+
"published": "2023-03-29",
|
|
486
|
+
"paragraph": "§ 7025(f)",
|
|
487
|
+
"quote": "Except as allowed by these regulations, processing an opt-out preference signal in a frictionless manner as required by Civil Code section 1798.135, subdivision (b)(1), means that the business shall not: (1) Charge a fee or require any valuable consideration if the consumer uses an opt-out preference signal. (2) Change the consumer's experience with the product or service offered by the business. (3) Display a notification, pop-up, text, graphic, animation, sound, video, or any interstitial content in response to the opt-out preference signal.",
|
|
488
|
+
"summary": "Frictionless means no fee, no degraded experience and no interstitial in response to the signal — a modal thrown up because GPC was seen breaks it. Showing whether the visitor has opted out is expressly not a violation, which is why the runtime uses a non-blocking status chip.",
|
|
489
|
+
"applies_to": ["us_link_text_missing", "headless_layout"]
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"id": "ccpa_7025_e_link_or_frictionless",
|
|
493
|
+
"topic": "us_optout",
|
|
494
|
+
"source": "California Code of Regulations, Title 11, § 7025(e)",
|
|
495
|
+
"source_url": "https://www.law.cornell.edu/regulations/california/11-CCR-7025",
|
|
496
|
+
"published": "2023-03-29",
|
|
497
|
+
"paragraph": "§ 7025(e)",
|
|
498
|
+
"quote": "They do not give the business the choice between posting the above-referenced links or honoring opt-out preference signals. Even if the business posts the above-referenced links, the business must still process opt-out preference signals, though it may do so in a non-frictionless manner.",
|
|
499
|
+
"summary": "The \"Do Not Sell or Share My Personal Information\" link and honouring the signal are not alternatives: the signal must always be processed; only the link becomes optional if the signal is handled frictionlessly.",
|
|
500
|
+
"applies_to": ["us_link_text_missing"]
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"id": "wcag22_sc_1_4_3",
|
|
504
|
+
"topic": "accessibility",
|
|
505
|
+
"source": "W3C, Web Content Accessibility Guidelines (WCAG) 2.2, Success Criterion 1.4.3 Contrast (Minimum), Level AA",
|
|
506
|
+
"source_url": "https://www.w3.org/TR/WCAG22/#contrast-minimum",
|
|
507
|
+
"published": "2023-10-05",
|
|
508
|
+
"paragraph": "SC 1.4.3",
|
|
509
|
+
"quote": "The visual presentation of text and images of text has a contrast ratio of at least 4.5:1, except for the following: Large Text Large-scale text and images of large-scale text have a contrast ratio of at least 3:1;",
|
|
510
|
+
"summary": "The AA contrast floor the banner theme is linted against.",
|
|
511
|
+
"applies_to": ["contrast_text", "contrast_button", "contrast_button_bg", "a11y_violation"]
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"id": "wcag22_sc_2_5_8",
|
|
515
|
+
"topic": "accessibility",
|
|
516
|
+
"source": "W3C, Web Content Accessibility Guidelines (WCAG) 2.2, Success Criterion 2.5.8 Target Size (Minimum), Level AA",
|
|
517
|
+
"source_url": "https://www.w3.org/TR/WCAG22/#target-size-minimum",
|
|
518
|
+
"published": "2023-10-05",
|
|
519
|
+
"paragraph": "SC 2.5.8",
|
|
520
|
+
"quote": "The size of the target for pointer inputs is at least 24 by 24 CSS pixels, except when: Spacing Undersized targets (those less than 24 by 24 CSS pixels) are positioned so that if a 24 CSS pixel diameter circle is centered on the bounding box of each, the circles do not intersect another target or the circle for another undersized target;",
|
|
521
|
+
"summary": "Banner controls, including the re-open icon, must meet the 24×24 CSS pixel target floor or the spacing exception.",
|
|
522
|
+
"applies_to": ["a11y_violation", "reopen_disabled"]
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"id": "anpd_br_cookies_guide",
|
|
526
|
+
"topic": "brazil",
|
|
527
|
+
"source": "ANPD (Brazil), Guia orientativo sobre cookies e proteção de dados pessoais",
|
|
528
|
+
"source_url": "https://www.gov.br/anpd/pt-br",
|
|
529
|
+
"published": "2022-10-01",
|
|
530
|
+
"paragraph": null,
|
|
531
|
+
"quote": null,
|
|
532
|
+
"summary": "The Brazilian authority's cookie guide expects a first layer in Portuguese with concise purposes, an accept-all and a reachable reject, granular management, withdrawal as easy as consent, and a cookie policy listing the trackers. Legitimate interest can cover some first-party measurement that does not build cross-site profiles. We have not verified the exact Portuguese wording, so no quote is given.",
|
|
533
|
+
"applies_to": ["reject_not_layer1", "missing_text", "no_default_lang", "declaration_stale"]
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"id": "fdpic_ch_cookie_guidance",
|
|
537
|
+
"topic": "switzerland",
|
|
538
|
+
"source": "FDPIC (EDÖB), Leitfaden betreffend Datenbearbeitungen mittels Cookies und ähnlichen Technologien, V. 1.1",
|
|
539
|
+
"source_url": "https://www.edoeb.admin.ch/de",
|
|
540
|
+
"published": "2025-10-06",
|
|
541
|
+
"paragraph": null,
|
|
542
|
+
"quote": null,
|
|
543
|
+
"summary": "Switzerland's baseline under Art. 45c FMG is inform-and-opt-out, but the FDPIC treats profiling, cross-site tracking and unexpected or high-risk processing as needing opt-in equivalent to the GDPR, and dark patterns invalidate consent either way. We have not verified the exact German wording, so no quote is given.",
|
|
544
|
+
"applies_to": ["regime_unknown_override", "default_on_non_necessary"]
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
"id": "uk_duaa_2025_schedule_a1",
|
|
548
|
+
"topic": "uk_pecr",
|
|
549
|
+
"source": "Data (Use and Access) Act 2025 — new Schedule A1 to the Privacy and Electronic Communications (EC Directive) Regulations 2003",
|
|
550
|
+
"source_url": "https://www.legislation.gov.uk/ukpga/2025/18/contents",
|
|
551
|
+
"published": "2025-06-19",
|
|
552
|
+
"paragraph": "Schedule A1",
|
|
553
|
+
"quote": null,
|
|
554
|
+
"summary": "The Act adds consent exceptions to PECR regulation 6, including statistical purposes and user-chosen appearance or functionality preferences, each conditional on clear information and a simple, free means to object. We summarise rather than quote because the exact statutory wording as commenced was not verified against legislation.gov.uk; the ICO's guidance entries above carry the verified wording of the statistical-purposes test.",
|
|
555
|
+
"applies_to": ["preconsent_tracker", "regime_unknown_override", "block_unknown_category"]
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"id": "google_consent_mode_signals",
|
|
559
|
+
"topic": "consent_mode",
|
|
560
|
+
"source": "Google, Consent mode (tag platform developer documentation)",
|
|
561
|
+
"source_url": "https://developers.google.com/tag-platform/security/guides/consent",
|
|
562
|
+
"published": "2024-03-06",
|
|
563
|
+
"paragraph": null,
|
|
564
|
+
"quote": null,
|
|
565
|
+
"summary": "Google tags read ad_storage, ad_user_data, ad_personalization, analytics_storage, functionality_storage, personalization_storage and security_storage. Mapping a category to the wrong signal — most damagingly sending granted ad_storage for a visitor who refused marketing — leaks data to Google Ads and contradicts the recorded choice. We do not quote the vendor documentation because its wording changes without notice; the compliance point is carried by the EDPB and ICO entries.",
|
|
566
|
+
"applies_to": ["consent_mode_mismatch", "gcm_advanced_unverified"]
|
|
567
|
+
}
|
|
568
|
+
]
|
|
569
|
+
}
|