←
WE People Pick fields · see what your role may see
Running as HR viewer Not Payroll Not an Admin
Try to pick a restricted field That is the point of this screen. Tick anything in the General list and the preview below rebuilds. Tick anything in the Restricted list and you will see exactly what happens — and, more importantly, where it happens.

Fields

3 of 8 selected

General

Permitted for your role

Restricted

Not permitted for your role
The verdict depends on who is asking. Tick a restricted field and this panel shows the answer for the seat you are sitting in: for most seats a refusal — from the database, not the screen — and for the payroll & system admin an audited read that goes on the record. Same screen, same query, different seat, different answer.
Custom fields appear here automatically once classified — every field must be classified before it can ever appear. There is no default classification and no “decide later”. The person who creates a field chooses general or restricted at the moment they create it, and that choice decides which part of the database the values physically live in.

Preview

5 of 185 rows

Five synthetic rows, rebuilt from your selection. Nothing is queried and nothing is stored — but the shape is real: a saved report holds the list of fields you picked, never a copy of the results and never a resolved list of columns. When somebody else opens it, it resolves against their rights, not yours.

Why the lock is not in this browser

Hiding a field in the interface protects nothing. The same value comes back through an export, an interface response, or a report somebody builds a slightly different way. So the restriction lives one layer down: restricted data sits in a separate part of the database, and the account this application uses to run your reports has no privileges there at all. If every line of our code were wrong, the query would fail with a permission error instead of returning a column.

One honest limit

We can prove that no field classified as restricted ever reaches a role that may not see it — that is a property of the database, and it is testable automatically every time the code changes. We cannot prove that nobody ever typed a pay figure into a general-purpose notes field. That gap is closed by governance rather than architecture: classification is mandatory when a field is created, changing a field's classification physically moves the data and is recorded, and making restricted data visible again needs a second approval.

One related item is worth flagging now rather than at handover: your BambooHR custom fields have accumulated over years, and any of them could hold something sensitive. Every inbound field gets classified before import, and an unclassified field stops the import rather than defaulting to general.

What this screen teaches. A field you may not see is not a hidden menu item — it is a query that cannot return the column, no matter who writes it or how. That is the difference between a permission and a preference, and it is the one thing in this project that is genuinely expensive to add later. See the full access matrix →