keelapps Satchel for Jira

For the files spread across a whole project

Jira zips one issue. Satchel zips the whole search.

Jira Cloud’s own Download all works one issue at a time. Satchel zips a JQL result or a whole project, foldered by issue key, in archives of up to 1 GB and 5,000 files — and then answers the question that always follows: what is actually in there, and how much of it can go? The archive is assembled in your own browser from your own Jira session, so attachment bytes never touch a server of ours. There is not one.

Try it free on the Atlassian Marketplace

Free for sites up to 10 users. Above that it is priced per user per month and billed by Atlassian — see pricing on the Marketplace.

Zero egress. No external server, no egress permission in the manifest, no copy of your files anywhere.

Works in
Jira Cloud
Runs on
Atlassian Forge
Your data
Never sent to us
Price
Free up to 10 users
Ninety-six attachments across a project: a JQL search, a filter, and one zip with a folder per issue. The archive is built in your browser. Watch on YouTube.

The gap this fills

Jira Cloud can download every attachment on one issue. Across issues it cannot: collecting the files behind a quarter's close means opening every issue and downloading each one's attachments separately. The request has been open on Atlassian's own tracker since 2018 — JRACLOUD-68871, 113 votes, still Gathering Interest — and past 150 attachments on one issue Jira stops showing previews and thumbnails (JRACLOUD-81747).

The Marketplace has a download-only app in this space and a heavyweight document management suite next to it. Nobody has put bulk download, attachment governance and storage analysis in one place.

Capabilities

What it does

One zip for the whole issue

Every attachment on an issue in a single archive of up to 1 GB, from a panel on the issue itself — including past 150, where Jira falls back to a list without previews or thumbnails.

A JQL result, or a project

From the project page: zip everything a JQL query matches, or the whole project, foldered by ISSUE-KEY/. Progress and cancel throughout.

Nothing overwritten, nothing hidden

Two files with the same name are renamed inside the archive rather than silently overwriting each other, and a note inside the zip lists anything that could not be included, with the reason.

See where the storage went

Occupancy by uploader, file type, issue type and age, plus the biggest files. Today Jira reports storage for the whole site, not per project.

Duplicate candidates

Files grouped by filename and exact byte size, with the bytes each group would reclaim. Candidates, not verdicts — Jira exposes no content hash, and Satchel says so wherever it shows a number.

Deletion that asks twice

Jira confirms every file, the dialog lists them, you type the confirmation, and each file is recorded before it goes. It ships switched off and, once on, is limited to Jira administrators unless they widen it — because Jira has no recycle bin for attachments.

Walkthrough

Reclaiming space, end to end

  1. Scan the project

    The project page builds an attachment inventory in the background: filename, size, type, uploader, issue and age for every file. It is checkpointed, so a big project finishes.

  2. Read the reports

    Storage by uploader and by file type, the biggest files, and the duplicate candidate groups with the bytes each would free. Export the whole inventory as CSV if somebody else has to approve the list.

  3. Take a copy first

    Zip what you are about to remove — the archive is built in your browser and lands on your disk, not on anybody's server — so “deleted” means “out of Jira”, not “gone”.

  4. Delete, on the record

    An administrator enables deletion, reads the preview Jira has checked, types the confirmation, and Satchel records every file before it removes it, and who removed it. That trail is kept for 400 days and deliberately not deletable from the interface.

Compared honestly

Against what you have today

Question Native Jira Download-only apps Satchel
Download every attachment on an issue? Yes — Download all Yes One zip
Across a JQL result or a project? — Sometimes Foldered by issue key
What is eating the storage? One site-wide number — By uploader, type, age, size
Which files are duplicated? — — Candidates, with reclaimable bytes
Delete in bulk, with a record? Per issue, or by an Automation rule — no preview or confirmation — Dry run, confirmation, audit
Do the files pass through a vendor server? — Often Never — built in your browser

Need the files without an app? The guide to downloading all Jira attachments has a script you can run today and the traps that lose files.

Limits

Limits we state up front

Duplicate detection finds candidates, not proven duplicates. Jira exposes no content hash for an attachment, and proving two files identical would mean downloading both — for a whole project, every byte in it. Satchel therefore matches on filename and exact byte size, and that qualification travels with the number in the payload, so no screen can show you reclaimable bytes without the sentence explaining what they are based on. Two files with the same name and different sizes are not grouped; neither are two unrelated files that happen to be the same size.

Deletion is irreversible. Jira has no recycle bin for attachments. A file deleted through Satchel is gone from Jira: it comes back only from a copy you took beforehand, and Atlassian does not undo customer deletions from its own backups. Satchel checks every file with Jira, lists them, requires a typed confirmation and records every deletion, but it cannot undo one. Deletion ships switched off and, once on, is limited to Jira administrators unless they widen it.

One scope is broader than what the app does. Deleting an attachment needs Jira's classic write:jira-work scope, whose consent text mentions creating and editing issues, posting comments and deleting issues. Satchel does none of those, and it never uploads. It is the only classic Jira scope that includes deleting an attachment — the granular one that would say exactly that is still in Beta — and an automated test fails the build if any code path reaches a mutating call other than the single attachment delete.

Uploading attachments is deliberately not built. The write scope Satchel holds would allow it, but the only write call in its code is the attachment delete, and the interface has no path to upload.

Availability

Free for sites up to 10 users.

Satchel for Jira installs into your Jira Cloud site straight from its listing on the Atlassian Marketplace. It is built and deployed on Atlassian Forge.

Licensing is handled by Atlassian. Sites with 10 users or fewer pay nothing at all, and above that the single-issue zip and the direct download stay free forever on every install — the no-preview download CLOUD-12448 asks for is never behind a licence check. What a licence buys is scale and governance: cross-issue archives, the project inventory, the duplicate and storage reports, CSV export and deletion.

There is a Satchel for Confluence too, with the same brand, the same zero-egress design, and bulk attachment move between pages.