Security overview

Effective [date of publication]

AppTuneCraft: Automation & Site Cleanup, a Jira Cloud app built on Atlassian Forge
Marketplace listingNot listed yet. TuneCraft is not on the Atlassian Marketplace yet, and its app key will be added here when it is.
Forge app IDari:cloud:ecosystem::app/facece90-dfd5-4792-9bff-6a5bd061a341
VendorPlugincraft Software Inc., a company incorporated under the laws of Québec, Canada

The short version

  • TuneCraft runs entirely on Atlassian Forge. It declares no outside network access, so your data does not leave Atlassian.
  • Jira decides who may do what in Jira. The app's pages read and change Jira with the person's own Jira rights. A change to your Jira configuration is made only when a Jira admin confirms it, and the clean-up tools are for Jira admins only. The work items the app creates are owner notices, sent by a person at the Manage level as themselves; the work items of the To do page, created as the Jira admin who confirms them; and alerts, which the app creates as itself.
  • To report a vulnerability, follow the Vulnerability Disclosure Policy and write to info@plugincraft.ca.
  • We respond to Atlassian's security alerts within 8 business hours and to critical support requests within 24 hours, and we fix vulnerabilities within the deadlines of Atlassian's Security Bug Fix Policy for Marketplace apps.
  • No penetration test has been done yet. We plan one, and a bug bounty, after the app is listed on the Atlassian Marketplace.

Report a vulnerability

If you think you found a security problem in TuneCraft, follow our Vulnerability Disclosure Policy. It says how to report, what is in scope, how we protect researchers who act in good faith, and what to expect from us and when.

Once TuneCraft is listed on the Atlassian Marketplace, you can also report through Atlassian: the Marketplace Security Bug Bounty program and the Vulnerability Disclosure Program.

Response commitments

These are the times Plugincraft commits to. They match the minimums that Atlassian sets for Marketplace partners in the Atlassian Enterprise Certified program, or improve on them. Business days are Monday to Friday, and business hours are the security contact hours: 8:00 to 17:00 Eastern Time. A message that arrives outside business hours counts from the start of the next business period.

WhatCommitment
A security alert from AtlassianWe respond within 8 business hours.
A critical support request (Severity 1 or 2, see Incident Response)First response within 24 hours, five business days a week.
A vulnerability report from anyone elseAcknowledged within 2 business days.
A security incident that affects customersWe notify Atlassian within 24 hours of learning of it.
A vulnerability fixWithin the deadlines in the next section.

Security reports go to info@plugincraft.ca, which receives mail at all times and is read on every business day.

Bug fix deadlines

We rate a vulnerability with its CVSS score and fix it within the deadline in Atlassian's Security Bug Fix Policy for cloud apps. The deadline runs from the day we receive the report, or from the day Atlassian reports the vulnerability to us through the Marketplace, whichever comes first. We checked the policy on October 27, 2026. Atlassian may change it, and the policy on Atlassian's site is the one that applies.

SeverityCVSS scoreFix deadline
Critical9.0 or higher10 days
High7.0 to 8.94 weeks
Medium4.0 to 6.912 weeks
LowBelow 4.025 weeks

These are the deadlines Plugincraft commits to. We do not ask for longer ones. Atlassian's policy allows an extension only in limited cases, for example when the fix depends on a change to the Atlassian platform. If we ever need one, we say so to the reporter. A security incident also has a severity and targets in Incident Response. Where both apply, we meet the shorter time.

Security practices

This section describes how we build, run and check TuneCraft. What it says about the app comes from the app's source code and documentation. What it says about Atlassian's platform comes from Atlassian's documentation, linked where it is used.

Secure development lifecycle

Access control

Data minimisation

Runs on Atlassian (no egress)

Encryption at rest and in transit

Backups and recovery

Penetration test and bug bounty (planned)

Permissions the app asks for

These are the 65 Forge scopes in the app's manifest, and what each is for. Each Jira admin who installs the app approves them. The app asks for the fewest it needs.

ScopeWhat it is for
read:jira-workCheck, as the person, whether they are a Jira admin or a project admin. Count, as the person, the work items a scheduled flow's search finds now (Jira's approximate count), and have Jira check a flow's JQL. Have Jira check, from the Optimize page, the Jira expression of a validator that Optimize proposes, and read the names of the statuses a flow names by id, as the person. Read the site's configuration that flows name, as the app or as a Jira admin; the Limits tool's reports of work items near Jira's caps, as the admin who opens the page (shown to them, never stored); the work items that have attachments, for the Attachments tool, and the work items an Archiving search finds, as the Jira admin who uses the tool (the ids of the largest are kept, never a name or a text); the site's labels, the count of work items that carry each and a search for the work items that carry a label picked, for the Labels tool, as the Jira admin who has it open; the count of the open work items of a sprint, for Sprints left behind, as the Jira admin who has it open; the status of the work item linked to a To do action; and the fields a work item type requires. Counts are kept; work item content is not.
write:jira-workCreate Jira work items: a notice to a flow's owner, as the person who sends it; the actions the To do page creates, as the Jira admin who confirms; the alerts, as the app (the only Jira writes the app makes as itself), in the project and work item type a Jira admin picked. Also, as the Jira admin who confirms (a filter, as its owner): a new owner or name for a filter or dashboard, each with an undo; the deletion of a filter or dashboard, which has none; a filter's JQL written again with a field's id in place of a name Jira no longer accepts, as its owner, when that owner is the person confirming (taking a filter from its owner to repair it is not offered yet), with an undo; sharing taken out for anyone on the web, every signed-in person or a space Jira no longer shows, on many filters and dashboards at once, with an undo; the Archiving tool's archiving of old work items, which its undo restores, and its move of stale work items to another status, which has no undo; the Labels tool's rename, merge and removal of a label on the work items that carry it, one at a time and without Jira's notification emails, with an undo for 30 days; the Merge fields page's copy of one custom field's values into another of the same type, on the work items that have one, only where the second is empty, one work item at a time and without Jira's notification emails, with an undo that clears the second field only where it still equals the first; and the Attachments tool's deletion of attachments, which Jira cannot bring back and which has no undo.
read:jira-user, read:user:jira, read:group:jira, read:avatar:jiraLearn who the person is and which groups they belong to; look up groups and people by name; show the names of flow owners as Jira shows them; check whether the accounts that flows name are still active; and, on the Groups page, read the first members of the groups a permission scheme grants something to, and group names. Names are shown and not stored.
write:group:jiraRemove deactivated people from a group, and add them back on undo, as the Jira admin who confirms. TuneCraft never deactivates or deletes an account.
storage:appForge hosted storage (Forge SQL) for the app's own data.
report:personal-dataReport the Atlassian account ids the app stores, once for each reporting cycle, and learn which accounts were closed so their data can be erased.
read:license:jiraRead, as a Jira admin, whether the site's Jira plan is Free and Jira's approximate count of its users, so admins need not type them.
read:issue-type-scheme:jiraRead which work type schemes hold each work type and which spaces use each scheme (ids and the default flag). Read only.
read:workflow:jira, read:workflow-scheme:jira, read:status:jiraRead workflows with the keys of the rules on their transitions, statuses, and the workflow schemes that hold each workflow with the number of spaces using them, to find workflows and statuses no space uses. Read only. A rule's settings are not kept.
write:workflow:jira, delete:workflow:jira, delete:workflow-scheme:jiraDelete a status, a workflow or a workflow scheme that nothing uses, as the Jira admin who confirms, after a record file they save. Jira has no trash for these.
read:project:jira, read:project-category:jira, read:project.property:jira, read:project-version:jira, read:project.component:jira, read:issue-type:jira, read:issue-type-hierarchy:jiraRead spaces, their categories, versions and components, and work types, for the Spaces, Schemes and Workflows tools and for the calls below. Jira's own sets for these calls list several of them together. The Spaces tool's weekly reading also asks for each space's lead, and keeps the lead's account id only while Jira says the lead is inactive; the app reads no role through them.
write:project:jira, delete:project:jira, write:project.avatar:jira, write:project-version:jira, delete:project-version:jira, delete:project.component:jiraArchive, put in Jira's trash or restore a space; change its lead, default assignee and category; put spaces on another permission scheme when identical schemes are merged (an undo puts them back); release, archive or delete a version; and delete a component, as the Jira admin who confirms, with an undo where Jira allows one.
read:screen:jira, read:screen-tab:jira, read:screenable-field:jira, read:screen-scheme:jira, read:issue-type-screen-scheme:jira, read:field-configuration:jira, read:field-configuration-scheme:jira, read:notification-scheme:jira, read:issue-security-scheme:jira, read:issue-security-level:jiraRead screens, their tabs and fields, field configurations, schemes and what uses each, to find those nothing uses and to count what a screen or a notification scheme holds, and, for Sprints left behind, to tell whether a space has issue security levels. Read only. Ids and counts are kept, never names.
read:field:jira, read:custom-field-contextual-configuration:jira, read:field.option:jiraRead fields, where a custom field is used (its contexts, spaces, screens and tabs) and whether a context holds an option. Read only. Ids, counts and true or false are kept.
write:field:jira, delete:field:jiraMove a custom field to Jira's trash, restore it, and delete a field that is already in the trash; and add spaces to a context of the field to keep in a merge (an undo takes them off), as the Jira admin who confirms.
write:field.option:jiraDisable or enable the options of a select field's context, and create in the field to keep in a merge the options it lacks (an undo disables them), as the Jira admin who confirms. TuneCraft never deletes an option.
write:issue-type-screen-scheme:jira, delete:issue-type-screen-scheme:jiraPut the spaces of a copy of a work type screen scheme on the identical scheme the admin keeps, and delete the copy that is left empty, as the Jira admin who confirms, after a record file they save. The schemes are proved identical again before each call. A move has an undo; Jira does not give a deleted scheme back.
write:screenable-field:jira, delete:screenable-field:jiraAdd the field to keep in a merge to the tab of each screen that shows the field to empty, right after it, and, for the undo, take it off only the screens TuneCraft added it to, as the Jira admin who confirms. Never a work item.
read:project-role:jira, read:application-role:jira, read:permission:jira, read:permission-scheme:jiraRead project roles, permission schemes and their grants to groups, roles and people, and the roles of each space, to find roles and groups nothing uses and deactivated people a scheme still names.
delete:project-role:jiraDelete a project role that no permission scheme grants and no space gave actors, as the Jira admin who confirms, after a record file they save.
write:permission:jira, delete:permission:jiraTake a role's grants out of the permission schemes in which no space that uses the scheme gives the role actors, and add them back on undo. Also take out a grant that gives a permission to anyone or to every user of a product, or give it to a group or a role instead, and put it back on undo. All as the Jira admin who confirms. TuneCraft never changes who is in a role.
delete:permission-scheme:jiraDelete a permission scheme copy that no space uses after its spaces were put on an identical scheme, as the Jira admin who confirms.
read:board-scope:jira-software, read:board-scope.admin:jira-software, read:sprint:jira-softwareRead, as the Jira admin who opens Boards or Sprints, the boards, their configuration and filter, and the sprints. Shown to them, never stored.
write:sprint:jira-software, delete:sprint:jira-software, write:board-scope:jira-softwareRename, close and delete sprints, add the open work items of a sprint it closes to the next future sprint or to a new one, and delete orphaned boards, as the Jira admin who confirms. Closing a sprint and deleting one have no undo. Names are not stored; the record keeps ids, states and keyed hashes.
read:audit-log:jiraRead Jira's audit records, only when a Jira admin presses "Who did it" on the Change history page, as that admin, for the days they picked. Shown to them and never stored.

Incidents and status

How we handle an incident is in Incident Response. A status page will be published with the Marketplace listing. Problems with Jira or Forge themselves are reported on Atlassian's status page.