Keelcroft / Azure DevOps Sync for Jira / Security

Security

Effective 30 September 2026. This page describes the controls in the current release.

Architecture

The app runs entirely on Atlassian Forge. Jira data is sent directly from Forge to the customer’s own Azure DevOps organization; Keelcroft operates no relay and no vendor-hosted backend. Persistent records use Forge storage, and credentials use Forge encrypted secret storage. The sync engine itself holds no Forge or Azure DevOps imports.

The app is not eligible for the Runs on Atlassian programme, and will not be: reaching a third-party API requires egress, which disqualifies that badge by definition.

Access controls

Credentials and inbound requests

Data integrity

What the app logs

One structured line is written per decision on four paths: a service hook arriving, a Jira change being considered, an administrator linking or replaying a pair, and a sync step finishing. Each line carries identifiers and an outcome only — the connection id, the work item id, the Jira issue id, the delivery id, the app’s own event id, the resulting status, the attempt count and, where something was skipped or refused, the reason.

Work item content is never logged. Titles, descriptions, tags and comments belong to the customer and to their Azure DevOps project, and no log statement accepts them as an argument. Neither are credentials: not the personal access token, not the service principal secret, and not the Basic credentials Azure DevOps presents on a service hook. The reason a delivery was refused is kept in the log and deliberately withheld from the caller.

This is asserted rather than merely intended: an automated test drives a real service hook whose payload carries a title, a description and a tag, captures everything written to the log, and fails the build if any of those strings, or either form of the hook credential, appears in the output.

Vulnerability reporting

Report suspected vulnerabilities privately to support@keelcroft.com with the subject line “Security”. Include reproducible steps and impact, but do not access data that does not belong to you and do not send credentials. Critical security reports receive an initial response within one business day.

The app does not claim SOC 2, Cloud Fortified, an independent penetration test, or participation in the Marketplace Security Bug Bounty Program.