Page MenuHomePhabricator

[Epic] Users with right privileges are able to view IP addresses
Open, In Progress, Needs TriagePublic

Description

Summary

After Temporary Accounts go into effect, we want to make sure that users who need IP address access to patrol effectively are able to do so. This task articulates the workflow for non-advanced right holders to get access.

Background

  • This task is about granting temporary accounts IP-viewing privileges to users who do not qualify for automatic access per the current policy.
  • Global access and Local access to checkusers, oversighters, admins and bureaucrats has been previously implemented in other tasks. This task is not for that.

User story

As an Admin or Steward, I want to know if a user meets the criteria for gaining access to view IPs, so that I can successfully evaluate a request and grant access.

Specifications

  • How should it look? (design)
  • What should it do when used correctly? (workflows)
  • What should it do when used incorrectly? (workflows)
Design
ScenarioMockup
User meets access criteria
User does meet criteria.png (1×1 px, 209 KB)
User does not meet access criteria
User doesn't meet criteria.png (1×1 px, 212 KB)
Workflow 1: Access granting
  • Users not holding these advanced rights but needing access to IPs for anti-vandalism purposes will be able to get this access through a community-defined process that grants them the right to view temp accounts IPs.
  • Through a community-maintained page on wiki, a user can request access to view IPs with a legitimate reason for doing so.
  • How do permissions work? (local groups, global groups)
  • An admin or a steward can evaluate this request and grant access to the user through Special:UserRights.
    • Admins can evaluate and grant access on their own wiki.
    • Stewards can evaluate and grant access on any individual wikis (not global access).
  • The user has to meet the following basic criterion for obtaining this access:
    • A minimum of 300-edits on the project
    • A minimum of 6-months old account
  • If either of the above criteria is not met, the user cannot be granted the right to view IPs.
  • If both of these criteria are met and the user is successfully granted the permission to view IPs, they will be able to go to Special:Preferences and opt-in to viewing IPs after agreeing to the terms of use
  • A user who does not have the right to opt-in to viewing IPs will not see the preference in their Special:Preferences (as opposed to a disabled preference in accordance with Codex guidelines)
  • The IP reveal right cannot be assigned to any existing groups.
    • This is to reduce the amount of risk associated with IP reveal right. We would like for those who have this right to have specifically requested it and understood the risks and responsibilities that come with having access to personally identifying information.
Workflow 2: Access revocation
  • Admins can revoke access locally from users through Special:UserRights
  • Stewards can revoke access from everybody (status quo)
Logs
  • Logs:
    • Does this need logs?
    • Where should logs go?
    • Who needs to see the logs?
    • Do logs need to be retained?
    • How should metrics work: what needs to be measured, and why?

No additional logging or metrics needed for this feature beyond what is captured in T325658.

Technical notes

While figuring out how to do this, we should assume that what we build may also need to allow an exemption to checking the thresholds, for certain groups granting the global group: T389808: Allow stewards to assign IP Reveal to cross-wiki patrollers who do not meet the thresholds defined for technical enforcement.

Acceptance criteria

Identify how we will know the task is done. Make these checkboxes specific, so that QA can meaningfully review completion.

  • Implement the access granting and revocation workflows as described above (see the specifications section)

Related Objects

StatusSubtypeAssignedTask
Resolvedkostajh
DeclinedNone
ResolvedNiharika
In ProgressNiharika
ResolvedSTran
ResolvedDreamy_Jazz
ResolvedDreamy_Jazz
ResolvedDreamy_Jazz
DuplicateNone
ResolvedDreamy_Jazz
ResolvedJJMC89
ResolvedDreamy_Jazz
Resolved mszabo
OpenNone
ResolvedDreamy_Jazz
ResolvedUrbanecm_WMF
ResolvedDreamy_Jazz
ResolvedSTran
ResolvedJJMC89
DeclinedDreamy_Jazz
ResolvedDreamy_Jazz
InvalidNone
InvalidNone
InvalidNone
ResolvedTchanders
ResolvedTchanders
DuplicateNone
ResolvedTchanders
Resolved MMoss_WMF
ResolvedTchanders
Resolvedkostajh
Resolvedsgrabarczuk
Resolved mszabo
ResolvedTchanders
ResolvedDreamy_Jazz
Resolved mszabo
ResolvedTchanders
ResolvedTchanders

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Noting that we're having some internal discussion about the access requirements, so it might make sense to mark some of the subtasks that depend on these requirements as stalled.

Moving this to "Needs refinement" in view of this.

If both of these criteria are met and the user is successfully granted the permission to view IPs, they will be able to go to Special:Preferences and opt-in to viewing IPs after agreeing to the terms of use

What happens if a user successfully requests the IP viewer permission but doesn't opt-in via Special:Preferences? According to wmf: Policy:Wikimedia Access to Temporary Account IP Addresses Policy#Disclosure we are only allowed to disclose IP addresses to other users with the same access rights – will there be a way for others to see if someone opted-in?

If both of these criteria are met and the user is successfully granted the permission to view IPs, they will be able to go to Special:Preferences and opt-in to viewing IPs after agreeing to the terms of use

What happens if a user successfully requests the IP viewer permission but doesn't opt-in via Special:Preferences? According to wmf: Policy:Wikimedia Access to Temporary Account IP Addresses Policy#Disclosure we are only allowed to disclose IP addresses to other users with the same access rights – will there be a way for others to see if someone opted-in?

Thanks for flagging this. There should be a way for users to see who else has this access. We're working out the details. I'll provide an update once I have one.

@Tchanders I've updated the description like you requested. Let me know if there's anything else you want me to add.

I added design mockups for the following scenarios:

User does not meet access criteria
  • Checkbox appears under 'Groups you cannot change'
  • Checkbox is disabled
  • Description explains why: User does not meet the access criteria
  • Note: The reason we decided to disable the checkbox is because this page is not currently using OOUI or Codex, therefore there is no inline error UI we can use.
User does meet access criteria
  • Checkbox appears under 'Groups you can change'
  • Checkbox is enabled

I added design mockups for the following scenarios:

User does not meet access criteria
  • Checkbox appears under 'Groups you cannot change'
  • Checkbox is disabled
  • Description explains why: User does not meet the access criteria
  • Note: The reason we decided to disable the checkbox is because this page is not currently using OOUI or Codex, therefore there is no inline error UI we can use.
User does meet access criteria
  • Checkbox appears under 'Groups you can change'
  • Checkbox is enabled

@KColeman-WMF Is the part under the "User rights log" section part of the design?

@Niharika wrote:
@KColeman-WMF Is the part under the "User rights log" section part of the design?

No, that's just leftover from the screenshot I used for the mockup.

We will make minimum requirements for IP reveal access and sysops are not intended to be able to lessen them. However, this currently excludes alternative accounts of users with access.

We will make minimum requirements for IP reveal access and sysops are not intended to be able to lessen them. However, this currently excludes alternative accounts of users with access.

Per the policy:

If a user account does not meet the criteria above, but still has a legitimate reason to access temporary account IP addresses, for a purpose that cannot be reasonably addressed by users who already have this access, Stewards are authorized to grant exceptions to the above criteria.

Does that help?

So what is needed:

  • Sysops can not assign ineligible user ip viewer right
  • Stewards can assign ineligible user ip viewer right
kostajh renamed this task from Implement: Users with right privileges are able to view IP addresses to [Epic] Users with right privileges are able to view IP addresses.May 5 2025, 9:24 AM
kostajh changed the task status from Open to In Progress.

The IP reveal right cannot be assigned to any existing groups

(1) If I read it correctly, this would include "arbcom" group that exists in some wikis. So sysops must assign them manually in addition. (2) Does it applies to checkuser-temporary-account right only? There is also an abusefilter-access-protected-vars right which provides similar access and is currently assigned to "abusefilter" custom group in enwiki and frwiki, see T381722: Add abusefilter-access-protected-vars to frwiki EFM and remove it for sysops

Also, what should be done if someone is appearently misusing ip reveal right? Since T375579: Allow stewards to prevent auto-promotion into specified groups globally is declined stewards will have no technical way to prevent user from having local access, but user can request local sysop or IP reveal right, and since IP reveal log is not available to sysops and crats, they may never know user is abusing the IP reveal right.

There is also an abusefilter-access-protected-vars right which provides similar access and is currently assigned to "abusefilter" custom group in enwiki and frwiki, see T381722: Add abusefilter-access-protected-vars to frwiki EFM and remove it for sysops

This user group has been reworked to no longer give access to the IP address of temporary accounts. You also need a IP reveal right from CheckUser to see the IP address. Therefore, the AbuseFilter right can be granted to relevant abuse filter groups independently of the IP reveal policy. This change was made in T387333.