FieldLock for Jira › Guides
"Read-only" hides three different questions: read-only for whom, read-only when, and read-only against what — the issue view only, or the REST API and automation too. The native answers differ on all three.
| Your sentence | What you are asking for | Where to look |
|---|---|---|
| "Nobody should edit this field, ever" | read-only for everyone | take it off the Edit screen |
| "Read-only once the issue reaches a status" | read-only after a point in time | jira.issue.editable — but it freezes the whole issue |
| "Read-only except for one role" | an edit restriction | looping transition with a role condition |
| "Read-only until someone approves a change" | read-only with a key | an app — see below |
All of them assume a company-managed project — team-managed projects do not expose screens, field configurations or workflow properties in the same way.
The simplest read-only there is: the field appears on the View screen, not on the Edit screen, so the issue view offers no way to change it. It applies to everyone, and it does not stop a write through the REST API, a bulk edit or an automation rule — those do not go through your screens.
jira.issue.editable status propertySet on a status, it makes issues in that status uneditable. This is the honest answer to "read-only after the issue is closed" — but the scope is the issue, not the field. As a Community answer puts it, it "will stop all edits to the issue, not just that one field".
A popular phrasing, and the source of a common misunderstanding. Screens attached to a transition control which fields that transition asks for; leaving a field off a transition screen does not make it read-only anywhere else. What genuinely narrows editing to one group is the reverse trick: a transition from a status back to itself, carrying the field on its screen, guarded by a condition such as "user is in project role". This works only if the field is first removed from the Edit screen — otherwise everyone still edits it inline in the issue view; Atlassian's own knowledge base pairs the two steps. Done properly, everyone else has no route to the field and that role does. It has to be repeated per workflow, and Jira records the change in issue history without a reason for it.
Some fields are read-only by definition — fields an app owns and writes itself. Jira renders them without an edit control, so no user, script or rule can change them after the issue exists; the one gap is issue creation, where the REST API can still inject a value — a well-built app detects that and clears it. That is the strongest form of read-only in Jira Cloud, and it comes from the app that owns the field, not from configuration.
When the native routes are enough: if "read-only" really means "nobody touches it" or "only this role touches it", and Jira's issue history is record enough, the Edit screen or a role-conditioned transition does the job at no cost. Atlassian's own knowledge base is blunt about the gap they do not close: "Jira Cloud does not natively support field-level restrictions based on roles, groups, or transitions."
Most teams who ask for a read-only field do not want it frozen forever — budgets get revised and contracts get amended. They want it read-only by default, changeable only with someone's agreement, and they want to be able to show later who agreed.
FieldLock for Jira is a Forge app for exactly that case. It offers two modes, which promise different things:
| Locked | Guarded | |
|---|---|---|
| The field | the app's own field, which Jira itself renders read-only — always a number | a custom field you already have — a number or single-line text |
| An outside change | refused immediately, so a wrong value is never visible — except at issue creation, see limits | goes through, then FieldLock restores the approved value — usually within a minute or two |
| Migration | values entered in the app, one issue at a time; no bulk import | none — the value already in the field becomes the starting point |
In both modes the way through the lock is the same: anyone who can browse the project proposes a value with a reason, project admins or a project role you choose approve or reject it, and the app writes it. An optional four-eyes rule stops the author of a request approving their own request. Approvers can also set a value directly in the panel — that path is recorded in the log with their account, and the four-eyes rule does not apply to it. Every event goes into an append-only audit trail that exports as a readable document and JSON.
jira.issue.editable is the right
tool, not this app.Free trial through the Atlassian Marketplace. Paid plans start at $10/month for up to 10 users.