File Field for Jira
Setup & usage documentation

Everything needed to create, configure and validate the field — including a small set of sample files you can use to test its upload rules end to end.

1. Overview

File Field for Jira – Attachment & Document Custom Fields adds a dedicated file-upload custom field to Jira issues and Jira Service Management request forms — separate from Jira’s single built-in attachment box, with rules you control.

Create as many fields as you need, each with its own allowed file types, size and count limits, and its own choice of storage mode. A field’s configuration lives with the field itself, so a “Design assets” field and a “Signed contract” field on the same issue type can enforce completely different rules.

At a glance

HostingJira Cloud — Software and Service Management. There is no Server or Data Center version.
VendorContextra Labs
Built withAtlassian Forge, Custom UI
Appears onIssue view, issue create, issue transition screens, and JSM portal request forms
Data residencyNo external domains declared. Portable-mode file bytes are ordinary Jira attachments; Private-mode file bytes live in Forge Object Storage — both operated by Atlassian, not a third party

Where the field's own settings live: configuration is per field, reached from Jira admin — not from the issue itself. See section 6.

2. Prerequisites

RequirementWhy
Jira Cloud (Software or Service Management) The app is a Forge app and runs on Cloud only.
An active licence or evaluation Without one, the field stops accepting new uploads, removals and configuration changes. Files already stored remain visible and downloadable — an inactive licence never hides or deletes your existing content.
Jira admin access Needed once, to create the custom field and add it to screens, contexts and work-type layouts.
Permission to edit the issue Needed to add or remove files day to day — the field uses Jira’s own issue-edit permission, not a separate one of its own.

3. Installation

  1. Open the app’s listing on the Atlassian Marketplace.
  2. Click Try it free (or Get it now) and choose the Jira site to install on.
  3. Confirm the requested permissions. They are listed in full in section 5.
  4. Wait for the install to complete. Nothing appears on any issue yet — the field itself does not exist until you create one, which is a separate step. See section 4.

4. Creating the Field

Installing the app adds a new custom field type to Jira — it does not add a field to any issue by itself. Creating and placing an actual field takes the same admin chain as any Jira custom field, plus one extra step on team-managed projects that is easy to miss.

Create the field

Jira Settings (the gear icon) → Issues → Custom fields → Create custom field. Search for File Field, select it, name it, and create it.

Classic projects: field scheme and screen

Add the new field to a Field Scheme used by your project, and to a Screen used by the issue types you want it on. This is the same chain any classic-project custom field goes through.

Team-managed projects: the project’s own field list

Team-managed projects keep a separate field list. Go to Project settings → Fields → Add field and add File Field there too — creating the field site-wide is not enough on its own.

Team-managed projects: each work type’s layout

Project settings → Work types → [the issue type] → drag the field into the Context fields area, then Save. Repeat for every work type that should show the field.

Skipping either team-managed step (3 or 4) leaves the field entirely invisible on issues of that type, with no error message anywhere. If a field you created does not appear on an issue, check the project’s own field list and that specific work type’s layout before assuming something is broken.

Where the field appears

SurfaceWhat it does
Issue view, create and transition screens The field’s edit view — add and remove files, subject to the field’s rules.
JSM portal request form and portal view The same field and the same rules, for requesters and agents. See section 9.
Field configuration screen Jira Settings → Issues → Custom fields → [field name] → Screens and contexts → [context] → Configure custom field. Not linked from anywhere on the issue itself — this is the only path to it.

5. Permissions

The app requests six scopes, and no others:

ScopeWhy it is needed
read:attachment:jira Read attachment metadata for the ownership check, and content for the server-side spoof re-check
write:attachment:jira Create attachments when a file is uploaded to a Portable-mode field
delete:attachment:jira Roll back a rejected upload, and honour file removal
read:jira-work Read the issue’s attachment list, and re-verify the calling user’s own Jira permission before returning a field’s files
write:jira-work Not granular — required because Jira’s legacy attachment-upload endpoint isn’t fully covered by the granular write:attachment:jira scope alone
storage:app Persist per-field configuration (storage mode, rules)

Five of six scopes are granular. write:jira-work is the one exception, and it is a platform gap rather than a design choice — Jira’s legacy attachment-upload endpoint is not yet fully covered by the narrower write:attachment:jira scope on its own.

Runs on Atlassian

The app declares no external domains and makes no network request to any third party. Portable-mode file bytes are ordinary Jira attachments; Private-mode file bytes live in Forge Object Storage — a store Atlassian operates on the app’s behalf, not a service Contextra Labs runs.

6. Configuration

Open the field’s configuration screen (see section 4). Configuration is per field — two File Field custom fields on the same issue can carry completely different rules.

Storage mode

Choose one of two radio options. The tradeoff is stated on the screen itself, not left to the documentation:

Portable — real Jira attachments. Files are stored as real Jira attachments. They survive if this app is ever uninstalled, and are visible in Jira's native attachment panel to anyone who can view the issue — per-field view permissions cannot be enforced in this mode. Files can only be added once the item exists, not during creation.

Private — hidden from Jira's attachments. Files are stored in this app's own storage, completely separate from Jira's native attachments — they never appear in Jira's Attachment panel, attachment lists, or any integration that reads native attachments, and unlike Portable mode they can be added while the item is still being created. They do NOT survive if this app is ever uninstalled (an export tool is provided to mitigate this). Per-field restriction by group or project role is not supported — anyone who can open this field can access its files.

Panel wording, reproduced — not a screenshot.

On that last sentence. Neither storage mode restricts who can access a field's files beyond Jira's own issue-view permission — Private mode hides files from Jira's attachment panel, but it is not a per-field access-control feature. Download the files you need, or export the whole field as a ZIP (see section 8), before you uninstall a field configured for Private mode.

Limits

FieldDefaultWhat it does
Minimum files 0 How many files must be present before the field is considered complete.
Maximum files 20 The most files this field will hold.
Max size per file (MB) 10 Applied per file, not to the field’s total.

Allowed file types

“Leave every box unchecked to allow any file type.” Four categories are offered:

CategoryCovers
Images PNG, JPG, GIF, SVG, WebP
Documents PDF, Word, text
Spreadsheets Excel, CSV
Archives ZIP, TAR, 7z

These decide what an admin can restrict a field to, not the security boundary by itself — every upload is also checked that its content actually matches its claimed extension, regardless of category. See section 10.

Preview

“Show inline previews for images and PDFs” — on by default. When off, every file downloads instead of previewing, even images.

Test your rules

A separate, visually distinct panel below Save. It does not change the field’s configuration — it only answers a question about it.

Test your rules. Check whether a hypothetical file would be accepted, without uploading anything.

File name · MIME type · Size (bytes) — then Test.

Result: “This file would be accepted.”, or the same rejection reason a real upload would get.

Panel wording, reproduced — not a screenshot.

This is the fastest way to check a size or type rule without needing to construct a real oversized or disallowed file — used in the walkthrough in section 10.

7. Uploading & Managing Files

On an issue with the field, or on a JSM request form, the edit view shows every file already attached, an Add file button, and — while the field is empty — a one-line summary of its active rules, for example:

Any file type · up to 20 files · max 10.0 MB each

Panel wording, reproduced — not a screenshot.

  1. Click Add file (or Add files, if more than one is allowed) and choose one or more files.
  2. Each file is checked against the field’s rules before anything is sent over the network. A file that fails shows its rejection reason immediately, with a Dismiss button.
  3. A file that passes uploads with a progress spinner next to its name, then joins the list with its size shown alongside.
  4. Click Remove next to any file to take it out of the field.

A rejected upload, reproduced

File is 12.4 MB, exceeding the 10.0 MB limit for this field.

Panel wording, reproduced — not a screenshot.

In Portable mode, the edit view also carries a standing notice: “Files in this field are stored as regular Jira attachments, visible to anyone who can view this issue. Per-field view permissions are not supported in either storage mode — anyone who can open this field can access its files.” It is not an error — it stays visible because it is genuinely true for as long as the field is in that mode.

If the licence or evaluation is inactive, the field becomes read-only: “An active licence is required to add or remove files. Existing files remain visible and downloadable.”

8. Viewing & Downloading

Anyone who can view the issue sees the field’s read-only view: a list of file names and sizes, or “No files attached.” if the field is empty.

  1. Click any file name to open it.
  2. Images open in an inline preview dialog, if previews are enabled for the field.
  3. Every other file type downloads immediately with one click.
  4. Click Download all as ZIP, shown whenever the field has files, to bulk-export every file in the field into a single archive — works in either storage mode.

If a file was removed directly in Jira — outside this field, for example through Jira’s own attachment panel in Portable mode — it stays listed with its name struck through and labelled “Removed in Jira”, and a notice appears: “Some files were removed directly in Jira and are no longer available through this field.”

9. JSM Portal Requests

A File Field added to a Jira Service Management request type appears on the portal request form for requesters, using the exact same rules configured for the field — the same allowed types, size and count limits, and the same storage mode. Agents see the same field, with the same read-only view described in section 8, on the portal’s request view.

There is nothing JSM-specific to configure: a field behaves identically whether it is reached from the Jira issue view or from a customer-facing portal.

10. Sample Test Files

Three small files for validating a field’s upload rules end to end, plus one rule you can test without uploading anything at all.

filefield-sample-document.pdf

A small, valid PDF. Falls in the Documents category.

Download

filefield-sample-image.png

A small, valid PNG. Falls in the Images category and previews inline.

Download

filefield-sample-image-renamed.pdf

The exact same PNG bytes as above, renamed with a .pdf extension — deliberately, to demonstrate the spoof check.

Download

Step 1 — restrict the field to Documents

In the field’s configuration (section 6), check only Documents under Allowed file types, leave Max size per file at its 10 MB default, and Save.

Step 2 — upload the sample PDF

On an issue carrying the field, click Add file and choose filefield-sample-document.pdf. It should upload and appear in the list.

Step 3 — upload the sample PNG (expect a rejection)

Try filefield-sample-image.png next. Since only Documents are allowed, it should be rejected immediately, before any network request:

".png" files are not allowed in this field. Accepted: doc, docx, odt, pdf, txt.

Panel wording, reproduced — not a screenshot.

Step 4 — allow Images too, then retry

Back in configuration, check Images alongside Documents and Save. Upload filefield-sample-image.png again — it should now be accepted, and clicking it in the field’s view should open an inline preview rather than a download.

Step 5 — the renamed file (expect a spoof rejection)

Upload filefield-sample-image-renamed.pdf. Its bytes are a PNG, but its extension claims .pdf. Extension and category checks pass — PDF is an allowed Document — but the content check catches the mismatch:

The file's content does not match its .pdf extension. This can happen if a file was renamed — please upload the original file.

Panel wording, reproduced — not a screenshot.

Step 6 — the size rule, with no file at all

Use Test your rules in configuration instead of constructing a large file. Enter file name scan.pdf, MIME type application/pdf, size 15000000 (roughly 15 MB) against the 10 MB default, and click Test:

File is 14.3 MB, exceeding the 10.0 MB limit for this field.

Panel wording, reproduced — not a screenshot.

Expected results

File / testRule exercisedExpected result
filefield-sample-document.pdf Category restricted to Documents Accepted
filefield-sample-image.png, before Step 4 Category restricted to Documents Rejected — type not allowed
filefield-sample-image.png, after Step 4 Category widened to Documents + Images Accepted, previews inline
filefield-sample-image-renamed.pdf Server-side content-vs-extension check Rejected — content does not match extension
Test your rules: scan.pdf, 15,000,000 bytes Max size per file Reported as rejected, exceeding the 10.0 MB limit

Worth noting for the third row: the spoof check compares file bytes against signatures it recognises, then compares that against the claimed extension. A renamed text file is not caught this way — there is no known signature to disagree with — which is why this walkthrough uses a renamed binary image instead.

11. Storage Modes In Depth

PortablePrivate
File bytes stored inJira’s own attachment storageForge Object Storage (this app’s bucket)
Survives uninstallYesNo — download first
Visible in Jira’s native attachment panelYesNo
Per-field view permissionNot enforceableNot enforceable
Who can see a fileAnyone who can view the issueAnyone who can view the issue
Works before the issue existsNoYes
Upload pathBrowser directly to Jira’s attachment APIBrowser directly to a time-limited, signed upload URL

Neither mode is a general recommendation over the other, and neither restricts who can access a file beyond Jira’s own issue-view permission — Portable suits files that should behave exactly like any other Jira attachment; Private suits files that need to stay isolated from Jira’s own attachment integrations, or that must be added before the issue exists.

12. Limitations

These are published rather than buried, because finding them after paying is worse for everyone.

Private-mode files do not survive an uninstall

This is the deliberate tradeoff for storage isolated from Jira’s own attachments, not a bug. Use Download all as ZIP from the field’s view, or download files individually, before you uninstall.

Neither storage mode restricts who can see a file

Anyone who can view the issue can see a field’s files, in both Portable and Private mode. Private mode hides files from Jira’s native attachment panel, but it does not add any per-field access restriction — it is isolation from Jira’s own attachment storage and integrations, not an access-control feature.

One permission is not granular

write:jira-work is required alongside the granular attachment scopes because Jira’s legacy attachment-upload endpoint is not yet fully covered by the narrower scope on its own — a platform gap, not a design choice.

Requiring a file before a workflow transition is not available yet

The underlying check exists in the app but is not yet enabled, pending further verification. A field can still be placed on a transition screen — it just cannot yet block the transition if empty.

Office and OpenDocument formats share one outer signature

.docx, .xlsx, .pptx, .odt, .ods and a plain .zip are all built on the same underlying ZIP container, so the content check can confirm a file is genuinely one of these six formats, but cannot tell which one from the bytes alone. It can still catch a file spoofed as an unrelated type, such as a PNG renamed to any of these.

13. Troubleshooting

What you seeWhyWhat to do
An active licence is required to add or remove files. Existing files remain visible and downloadable. The licence or evaluation is inactive. Renew or start an evaluation from the Marketplace listing. Nothing already stored is affected.
Could not identify this issue. Try refreshing the page. The field loaded without full page context, usually a stale tab. Refresh the page and try again.
Uploaded to Jira, but saving the field failed: … The file itself reached Jira as an attachment, but the field’s own value failed to save. Refresh and check whether the file is listed. If not, remove the orphaned attachment in Jira and retry the upload.
The file's content does not match its extension… The uploaded file’s bytes don’t match the extension it was given — typically a renamed file. Upload the original, unrenamed file.
File is …, exceeding the … limit for this field. The file is larger than the field’s configured maximum size. Use a smaller file, or ask an admin to raise “Max size per file” in configuration.
… files are not allowed in this field. Accepted: … The file’s type is outside the field’s Allowed file types. Use an accepted type, or ask an admin to widen the allowed categories.
Some files were removed directly in Jira and are no longer available through this field. Someone deleted the underlying Jira attachment outside this field (Portable mode only). Expected behaviour, not an error. Remove the stale reference or re-upload the file.
No files attached. The field has never had a file added on this issue. Not an error — add a file if one is expected.