v1.60.17
2026-07-13
Current
Azure: App Service deploy credentials that bypass Entra ID and MFA
An App Service publish profile is a static password that grants code deployment — and it leaks often, straight into repos and pipelines. The scan now flags apps that still allow basic-auth publishing.
Security
- →App Service basic-auth publishing (AZ-116): flags App Service apps that still allow basic-authentication publishing over SCM (Kudu/Git deploy) or FTP — static credentials that bypass Entra ID and Conditional Access and, if leaked, allow arbitrary code deployment into the app
- →Full remediation playbook: ships with an audit-and-disable playbook (PowerShell & Azure CLI) and guidance on migrating deployment to Entra ID / managed identity
v1.60.16
2026-07-13
Azure: log history that runs out before the investigation starts
Attackers often dwell for weeks before discovery. If your logs only go back 30 days, the early-stage evidence is already gone. The scan now flags Log Analytics workspaces with too-short retention.
Security
- →Log Analytics retention (AZ-115): flags Log Analytics workspaces retaining data for fewer than 90 days, where security and audit logs age out before incident responders can use them
- →Full remediation playbook: ships with an audit-and-raise playbook (PowerShell & Azure CLI) and per-table retention guidance for keeping security logs long-lived without ballooning cost
v1.60.15
2026-07-13
Azure: Defender for Cloud alerts with nowhere to go
Detection without notification is effectively no detection. If Defender for Cloud has no security contact email, high-severity alerts sit silently in the portal while an attack runs. The scan now flags that gap.
Security
- →Defender security contact (AZ-114): flags subscriptions where Microsoft Defender for Cloud has no security contact email configured, so security alerts — including high-severity detections — are never delivered to a monitored inbox
- →Full remediation playbook: ships with an audit-and-configure playbook (PowerShell & Azure CLI) for setting a security contact and enabling high-severity alert emails
v1.60.14
2026-07-13
Azure: app registrations open to other tenants or personal accounts
An unexpectedly multi-tenant or consumer-account app registration is a classic attacker persistence trick — a foothold that survives password resets. The scan now flags apps that reach beyond your own tenant.
Security
- →App sign-in audience (ID-028): flags app registrations whose signInAudience accepts personal Microsoft accounts (medium) or any Entra ID organisation / multi-tenant (low), instead of being restricted to your home tenant
- →Full remediation playbook: ships with an audit-and-restrict playbook (PowerShell & Azure CLI) for switching apps back to single-tenant and investigating unrecognised ones
v1.60.13
2026-07-13
Azure: storage accounts allowing cross-tenant data replication
Cross-tenant replication can quietly stream a storage account’s data into an organisation you don’t control — a low-noise exfiltration pipe that bypasses the account’s own firewall. The scan now flags it.
Security
- →Cross-tenant replication (AZ-113): flags storage accounts with allowCrossTenantReplication enabled, where blob object-replication policies can copy data into storage accounts in other Entra ID tenants
- →Full remediation playbook: ships with an audit-and-disable playbook (PowerShell & Azure CLI) and guidance on constraining replication to your own tenant
v1.60.12
2026-07-13
Azure: SQL servers exposed to the internet or all Azure services
A database reachable from the whole internet is one leaked password away from a breach — and automated scanners will find it. The scan now flags over-broad SQL server firewall rules.
Security
- →SQL firewall exposure (AZ-112): flags Azure SQL logical servers with a firewall rule spanning 0.0.0.0-255.255.255.255 (open to the entire internet, critical) or the 0.0.0.0-0.0.0.0 ‘Allow Azure services’ rule (any Azure tenant’s IP, high)
- →Full remediation playbook: ships with an audit-and-remove playbook (PowerShell & Azure CLI) for tightening firewall rules and moving to private endpoints or VNet rules
v1.60.11
2026-07-13
Azure: Key Vaults still on the legacy access-policy model
Vault access policies are coarse, easy to over-provision, and invisible to Entra ID access reviews and PIM. The scan now flags vaults that haven’t moved to the Azure RBAC permission model.
Security
- →Key Vault RBAC model (AZ-111): flags Key Vaults where enableRbacAuthorization is off (or left at its access-policy default) instead of using granular Azure RBAC roles that are centrally auditable and PIM-eligible
- →Full remediation playbook: ships with an audit-and-migrate playbook (PowerShell & Azure CLI) for mapping access policies to Key Vault RBAC roles and switching the permission model safely
v1.60.10
2026-07-13
Azure: storage accounts still allowing Shared Key (account key) access
A storage account key is a master key to all of the account’s data — it bypasses RBAC and Conditional Access and can’t be scoped or cleanly revoked. The scan now flags accounts that haven’t moved to Entra ID auth.
Security
- →Shared Key access (AZ-110): flags storage accounts where allowSharedKeyAccess is enabled (or left at its enabled-by-default value) instead of requiring Entra ID (Azure AD) authorization for Blob, Queue and Table access
- →Full remediation playbook: ships with an audit-and-migrate playbook (PowerShell & Azure CLI) for moving clients to Entra ID and disabling account-key access safely
v1.60.9
2026-07-13
Azure: insecure OAuth redirect URIs on app registrations
A wildcard or cleartext-http reply URL turns any sign-in to an app into a potential account takeover — no stolen password required. The scan now flags them.
Security
- →Insecure redirect URIs (ID-027): flags app registrations whose OAuth reply URLs use a wildcard (an attacker can register a matching host to capture auth codes) or cleartext http:// (tokens sent unencrypted) — localhost dev URLs are excluded
- →Full remediation playbook: ships with an audit-and-fix playbook (PowerShell & Azure CLI) for replacing wildcard/http reply URLs with exact https values
v1.60.8
2026-07-13
Azure: risky tenant-wide OAuth consent grants (illicit-consent detection)
OAuth consent-phishing gives an app standing access to everyone’s mail and files — access that survives password resets and isn’t stopped by MFA. The scan now finds those grants.
Security
- →Risky OAuth delegated grants (ID-026): flags admin-consented (tenant-wide) OAuth2 delegated grants to high-risk Graph scopes such as Mail.ReadWrite, Mail.Send, Files.ReadWrite.All and Directory.ReadWrite.All — the standing access OAuth consent-phishing attacks aim to establish
- →Full remediation playbook: ships with an audit-and-revoke playbook (PowerShell & Azure CLI) plus guidance on locking down user consent and enabling the admin consent workflow
v1.60.7
2026-07-13
Azure: over-privileged application & service-principal Graph permissions
Apps consented to a handful of Microsoft Graph permissions are effectively hidden Global Admins — they act with no signed-in user and bypass Conditional Access. The scan now surfaces them.
Security
- →High-risk Graph app permissions (ID-025): flags any application or service principal granted RoleManagement.ReadWrite.Directory, AppRoleAssignment.ReadWrite.All, Application.ReadWrite.All, Directory.ReadWrite.All or PrivilegedAccess.ReadWrite.AzureAD — each a path to full tenant takeover if the app’s credentials leak
- →Full remediation playbook: ships with an audit-and-revoke playbook (PowerShell & Azure CLI) and least-privilege guidance for right-sizing each grant
v1.60.6
2026-07-13
AWS ECS container security: privileged containers, plaintext secrets & host networking
With EKS already covered, the scan now assesses ECS too — so a containerized AWS estate is checked whichever orchestrator it runs on.
Security
- →Privileged & plaintext secrets (AWS-ECS-001): flags ECS task definitions with privileged containers (near-root host access) or secret-like values passed as plaintext environment variables instead of via the secrets field
- →Host network mode (AWS-ECS-002): flags task definitions using 'host' networking, which shares the host network namespace and bypasses per-task isolation
v1.60.5
2026-07-13
GCP data lifecycle: secret rotation & Cloud SQL customer-managed keys
Two GCP checks so credentials don’t live forever and databases aren’t locked to Google-managed keys — both about who controls the key material and for how long.
Security
- →Secret rotation (GCP-SECRET-002): flags Secret Manager secrets with no rotation policy, so a leaked value doesn’t stay valid indefinitely
- →Cloud SQL CMEK (GCP-SQL-008): flags Cloud SQL instances still on the default Google-managed key instead of a customer-managed key you control and can revoke
v1.60.4
2026-07-13
AWS data-exposure hardening: SNS encryption & private container registries
Two AWS checks closing quiet data-exposure gaps — message topics that store data unencrypted, and container registries anyone on the internet can pull from.
Security
- →SNS at-rest encryption (AWS-SNS-002): flags SNS topics with no KMS key, so message data buffered in the topic is stored unencrypted
- →Private container registries (AWS-ECR-003): flags ECR repositories whose policy grants a public principal ('*') pull/push access, exposing your images — and any secrets baked into them — to the internet
v1.60.3
2026-07-12
Fix: “Deploy to Azure” button for the one-time assessment
The one-time assessment’s Deploy to Azure button failed with a template-download error. Beacon now serves the deployment template from its own public endpoint, so the button works again.
Fix
- →Deploy to Azure works again: the button previously pointed at a GitHub raw URL that Azure couldn’t download. The ARM template is now served from Beacon’s own public, CORS-enabled endpoint, so “error downloading the template” no longer appears
v1.60.2
2026-07-12
GCP workload hardening: least-privilege Cloud Run & node currency
Two GCP checks that keep the serverless and Kubernetes surface least-privileged and patched — so a compromised service can’t roam the project, and nodes don’t drift onto vulnerable versions.
Security
- →Cloud Run identity (GCP-RUN-003): flags Cloud Run services that run as (or default to) the default compute service account, which holds broad Editor permissions — each service should use a dedicated least-privilege account
- →GKE node currency (GCP-GKE-009): flags GKE node pools without auto-upgrade and auto-repair, which let nodes drift onto unpatched, unsupported Kubernetes and OS versions
v1.60.1
2026-07-12
Fix: one-time assessment now scores GCP correctly and reports honest coverage
Two integrity fixes to the one-time assessment tool so a signed report can be trusted end to end — a GCP assessment now actually evaluates its checks, and a scan that reached nothing no longer claims full confidence.
Security
- →GCP assessments count & hash their catalog: the assessment tool previously treated the GCP check catalog as empty, so a signed, tamper-evident GCP report scored none of its checks and embedded a false completeness claim. GCP now hashes and counts its full catalog like Azure and AWS
- →Honest coverage confidence: a scan that evaluated nothing (missing permissions, throttling, or an empty catalog) used to report 100% coverage confidence; it now reports 0% — “insufficient coverage” — so a partial scan can’t read as a confident clean bill of health
v1.60.0
2026-07-12
AWS internet-exposed workloads: edge WAF & public Lambda URLs
The public front door of your AWS apps is now assessed. The scan checks that internet-facing load balancers sit behind a WAF and that no Lambda function is invokable by anyone with no authentication.
Security
- →Edge WAF (AWS-WAF-001): flags internet-facing Application Load Balancers with no WAFv2 Web ACL, so inbound web attacks (SQLi, XSS, bad bots) hit the app unfiltered
- →Public Lambda URLs (AWS-LAMBDA-003): flags Lambda Function URLs configured with AuthType NONE — invokable by anyone on the internet with no authentication
v1.59.0
2026-07-12
AWS vulnerability & patch truth: live SSM and Inspector findings
Knowing a patch policy exists isn't the same as knowing a server is patched. The AWS scan now reads the real per-host patch state and live vulnerability findings, so “is anything actually exposed right now?” finally has an answer.
Security
- →Patch compliance (AWS-SSM-001): flags SSM-managed instances with missing or critical/security-non-compliant patches — the real per-host state from Patch Manager, not just that a config exists
- →Live vulnerabilities (AWS-INSP-001): flags an Amazon Inspector that's off for EC2/ECR, or that has active CRITICAL findings — confirmed, exploitable CVEs on running resources
v1.58.0
2026-07-12
AWS EKS coverage: Kubernetes control-plane security checks
AWS containers were a blind spot — the scan had zero coverage of EKS. This release adds the three most breach-relevant Kubernetes control-plane checks so a containerized AWS estate no longer goes unassessed.
Security
- →Public API endpoint (AWS-EKS-001): flags EKS clusters whose Kubernetes API server is reachable from 0.0.0.0/0, exposing the control plane to the internet
- →Secrets encryption (AWS-EKS-002): flags clusters that don't envelope-encrypt Kubernetes secrets with a KMS key, leaving them only base64-encoded in etcd
- →Control-plane logging (AWS-EKS-003): flags clusters without audit and authenticator logging, so cluster authentication and API activity go unrecorded
v1.57.0
2026-07-12
AWS detection efficacy: Security Hub standards & GuardDuty protections
Enabling a security service isn't the same as it detecting anything. The AWS scan now checks that Security Hub and GuardDuty are actually configured to evaluate your estate — not just switched on with an empty dashboard.
Security
- →Security Hub standards (AWS-SH-002): flags a Security Hub that's enabled but has no security standard subscribed — so it evaluates no controls and its empty findings list means “nothing checked”, not “nothing wrong”
- →GuardDuty protections (AWS-GD-003): flags GuardDuty detectors with protection features (EBS malware, RDS logins, Lambda network, EKS runtime, S3 data events) left off, so those attack surfaces go unwatched
v1.56.0
2026-07-12
GCP identity takeover: federation trust & custom-role escalation checks
The GCP scan now looks for the two quiet paths into a project that the standard IAM baseline misses: federation trust anyone can walk through, and custom roles that let a holder promote themselves.
Security
- →Federation trust (GCP-IAM-017): flags Workload Identity Federation providers with no attribute condition, which any external identity the provider trusts — any GitHub repo, any AWS account — could use to impersonate the bound service account
- →Custom-role escalation (GCP-IAM-018): flags project custom roles that include privilege-escalation permissions (
setIamPolicy, iam.serviceAccounts.actAs, serviceAccountKeys.create, roles.update), any of which lets a holder promote themselves toward owner
v1.55.0
2026-07-12
AWS ransomware recoverability: Backup Vault Lock checks
Backups only help if an attacker can't delete them. The AWS scan now checks that your AWS Backup vaults are locked (WORM) and keep recovery points long enough to survive a slow-burn intrusion — the control that separates “we restored” from “they wiped the backups too”.
Security
- →Vault Lock enforced (AWS-BKP-001): flags any AWS Backup vault without Vault Lock, so recovery points can't be deleted before their retention elapses — even by someone with stolen admin credentials
- →Retention floor (AWS-BKP-002): flags locked vaults whose minimum retention is under 7 days, so immutable copies survive long enough to matter when an intrusion is found late
v1.54.0
2026-07-12
AWS identity takeover: role-trust, privilege-escalation & CI/CD OIDC checks
The AWS scan now looks for the identity paths real breaches use, not just the CIS password-policy basics. Three new checks flag roles anyone can assume, policies that let a user quietly make themselves an admin, and CI/CD pipelines that any GitHub repository could hijack.
Security
- →Role-trust exposure (AWS-IAM-018): flags IAM roles whose trust policy allows
sts:AssumeRole from a wildcard principal or an external account with no ExternalId / SourceArn condition — the cross-account and confused-deputy takeover vectors
- →Privilege escalation (AWS-IAM-019): flags customer-managed policies that allow escalation actions (
iam:PassRole, iam:CreatePolicyVersion, iam:Attach*Policy, sts:AssumeRole, …) on Resource "*", which let a holder promote themselves to administrator
- →CI/CD OIDC trust (AWS-IAM-020): flags GitHub Actions OIDC roles whose
:sub claim is a wildcard or whose :aud condition is missing, so an arbitrary repository can no longer assume your deployment role
v1.98.0
2026-07-12
Assessment tool: framework benchmarks & adoption metrics (Phase 15)
Assessment results now speak the language your prospects care about. Every snapshot reports its pass rate against each mapped compliance framework, and a new metrics view shows how much the tool is actually being used.
Feature
- →Framework benchmarks: each snapshot's detail shows a per-framework pass rate — "82% against SOC2", "76% against NIST" — computed across all assessed controls, passing ones included
- →Adoption metrics: a new
/api/assessments/metrics pulse reports snapshots stored and run outcomes (success / failed), so you can gauge how much the tool is being used
v1.97.0
2026-07-12
Assessment tool: fleet run telemetry (Phase 14)
Running the assessment across a fleet no longer means flying blind. Each run can report its outcome back to Beacon, so an MSP sees central fleet health — "198 of 200 tenants assessed, 2 failed" — including failures, without scraping logs.
Feature
- →Run telemetry:
--run-log <file> appends an NDJSON outcome line (score, coverage, duration, success/failure) per run, and posts the same event to Beacon when an import URL + token are set
- →Central fleet view: reported runs land in a new runs feed (
/api/assessments/runs) so you can see the whole fleet at a glance, failures included — not just the tenants that succeeded
- →Failures count too: a run that errors still reports a failed outcome, so throttled or misconfigured tenants surface instead of silently going missing
v1.96.0
2026-07-12
Assessment tool: asymmetric signing (Phase 13)
Results files can now carry a real anti-forgery signature. Sign with an Ed25519 private key and a Beacon verifies it with only the matching public key — so a valid signature proves who produced the file, not merely that someone knew a shared secret.
Security
- →Ed25519 asymmetric signatures:
--sign-key-file <key.pem> signs with a private key; the server verifies with a public key it never holds the secret half of — true anti-forgery, no shared secret to leak
- →Public key surface: the server publishes its verification key at
/api/assessments/tool/signing-key so operators can confirm which key their signatures check against
- →Fully back-compatible: the existing shared-secret HMAC signing still works unchanged; both import as signed
v1.95.0
2026-07-12
Assessment tool: live-client onboarding (Phase 12)
Promoting a snapshot can now hand you a live client, not just a frozen one. Attach a validated cloud connection at promote time and the new client keeps scanning immediately — closing the last mile from pre-sales assessment to a recurring monitored client.
Feature
- →Promote to a live client: pass a connection when promoting a snapshot and its credentials are validated, encrypted at rest, and stored in one transaction — the client is monitored from that moment
- →Still optional: omit the connection to onboard a connection-less client and add credentials later, exactly as before
- →Coverage confidence: every snapshot now reports what fraction of the estate the scan could actually reach, so you know how complete the picture is
v1.94.0
2026-07-12
Assessment tool: standalone AWS scanning (Phase 11)
The downloadable assessment tool now scans AWS, not just Azure — closing the gap between the cloud-aware data model and what the tool can actually do. Point it at an AWS account with --cloud aws and it runs the full AWS check load locally and produces the same importable results file.
Feature
- →Standalone AWS scans:
node beacon-assess.mjs --cloud aws runs the AWS check suite (IAM, S3, network, encryption, logging, and more) against the ambient AWS credentials and writes a cloud: aws results file
- →Zero install: the AWS SDK is bundled into the download, so nothing extra is needed in the target environment (AWS CloudShell, a CI runner, or a laptop)
- →Ambient credentials: uses environment variables,
aws configure / SSO, or an instance role — with --aws-profile and --aws-region to steer it
v1.93.0
2026-07-12
Assessment tool: trusted distribution (Phase 10)
You can now audit and vouch for exactly what the assessment tool runs. Every build ships a machine-readable SBOM of the tool's dependencies, and results files can be cryptographically signed so a Beacon imports them as tamper-proof provenance rather than just tamper-evident.
Security
- →SBOM on every download: a CycloneDX software bill of materials ships next to the tool (with its own published hash) so you can audit the dependency graph before running it in your tenant
- →Signed results files:
--signing-key HMAC-signs a results file; a Beacon with the matching key imports it as signed (anti-forgery), not just verified (anti-corruption)
- →No secret leakage: the portal reports whether signed downloads are available without ever exposing the signing key
v1.92.0
2026-07-12
Assessment tool: white-label reports & shareable snapshots (Phase 9)
The pre-sales onboarding bridge now goes the last mile. An assessment report can wear your own brand instead of Beacon's, and any snapshot can be shared as a read-only link a prospect opens without a login — so a one-time assessment becomes a client-ready deliverable.
Feature
- →Org-level white-label: set your organisation's logo, colours and custom domain once, and every snapshot report export carries your brand in place of Beacon's
- →Shareable snapshot links: mint a read-only public link to a snapshot's report (expiring and revocable, rate-limited) so a prospect can view it without a Beacon login
- →Branded offline reports: the CLI gains
--brand-name, --brand-logo, --brand-primary and --brand-accent to white-label the locally-rendered report too
v1.91.0
2026-07-12
Assessment tool: multi-cloud foundation (Phase 8)
The assessment pipeline is now cloud-aware end to end. Snapshots record which cloud they cover and the portal tags each one, so the model, import and UI are ready for AWS and GCP alongside Azure. The standalone tool scans Azure today; standalone AWS/GCP scanning is the next step.
Feature
- →Cloud-aware snapshots: every assessment records a
cloud value (azure / aws / gcp) through the results file, import and storage, and the snapshots list tags it
- →Back-compatible: existing snapshots and older files default to
azure, so nothing breaks
v1.90.0
2026-07-12
Assessment tool: fleet-scale automation (Phase 7)
Running the assessment across a whole fleet no longer means driving it tenant by tenant. A single batch run covers many tenants and resumes where it left off if interrupted, results can be scheduled and consumed by automation, and the portal flags tenants that are overdue for a fresh assessment.
Feature
- →Multi-tenant batch runs:
--batch <config.json> assesses many tenants in one invocation and resumes from a checkpoint if a run is interrupted
- →Scheduler-friendly:
--json emits a machine-readable summary, so cron / Task Scheduler / Azure Automation can run the tool on a cadence and act on the result
- →Reassess reminders: the Assessment page flags a tenant's latest snapshot once it's more than 30 days old
v1.89.0
2026-07-12
Assessment tool: secret & token lifecycle hardening (Phase 6)
The automation added for unattended imports is now safe to leave switched on. Ingest tokens can be listed and revoked (a leaked token can be killed instantly), the ingest endpoint is rate-limited, and the results file can be encrypted at rest so cleartext identifiers never touch disk.
Security
- →Revocable ingest tokens: tokens are now tracked per org with a last-used time and can be revoked from the Assessment page — a revoked token stops importing immediately, even though its signature is still valid
- →Rate-limited ingest: the machine ingest endpoint is throttled per IP, so a leaked token can't drive unbounded imports
- →Encryption at rest:
--encrypt-key writes the results file AES-256-GCM-encrypted (recover with --decrypt), so files carrying cleartext identifiers never land on disk unprotected
v1.88.0
2026-07-10
Assessment tool: productization & ops hardening (Phase 5)
The final roadmap phase polishes the assessment tool for general availability and removes maintenance risk: exported reports carry the MSP's name, the docs report the real check count, the one-click deploy is no longer pinned to a single repo, and a CI guard stops the deploy template from drifting from its source.
Feature
- →MSP-branded exports: re-exported snapshot reports now carry your organization's name in the header instead of "Beacon"
- →Configurable Deploy-to-Azure: the one-click button's template URL is now configurable, so forks and self-hosted instances aren't pinned to a specific repo or branch
- →Report format in the builder: the command builder now offers HTML / PDF / CSV / none for the local report
Docs & reliability
- →Live check count: the docs now show the real number of checks from the server catalog instead of a hard-coded figure
- →Drift guard: a test fails if the Deploy-to-Azure ARM template drifts from its Bicep source, plus a new troubleshooting guide and deploy cost/cleanup notes
v1.87.0
2026-07-10
Assessment tool: scale & automation (Phase 4)
The assessment tool moves from one-off to fleet-ready. A single run can now cover multiple Azure subscriptions, and results can flow straight into Beacon unattended — so the one-click Deploy-to-Azure container (or any scripted run) lands a snapshot with no manual download and upload.
Feature
- →Multi-subscription runs:
--subscription is now repeatable — assess several subscriptions in one run, with tenant-wide findings deduplicated and resource findings merged into a single file
- →Unattended auto-import:
--import-url + an org-scoped ingest token post results straight into Beacon (snapshot, new client, or attach) — no manual upload
- →Closed deploy loop: the one-click Deploy-to-Azure template takes an
ingestToken so the container imports its own results automatically
- →Ingest tokens: admins can mint short-lived, org-scoped ingest tokens from the Assessment page for scripted / CI imports
v1.86.0
2026-07-10
Assessment tool: diff, trend & snapshot lifecycle (Phase 3)
Repeated assessments now tell a story. Compare any two assessments of the same tenant to see what was fixed, what's new, and how the score moved; watch a tenant's score trend across scans; and re-export a saved snapshot as a report or JSON without re-running the tool. Snapshots are also fully manageable — rename, delete-with-confirmation, and one-click export.
Feature
- →Assessment diff: compare two snapshots of the same tenant — new vs. resolved vs. persisting findings, control state changes, and the score delta
- →Score trend: the detail view shows a tenant's score across successive assessments, so remediation progress is visible at a glance
- →Re-export: download a stored snapshot as an HTML/CSV report or the results JSON, re-rendered server-side from the saved posture
- →Snapshot management: rename snapshots and delete them behind a confirmation prompt
v1.85.0
2026-07-10
Assessment tool: onboarding bridge (Phase 2)
A one-time assessment no longer dead-ends as a read-only record. You can now turn a snapshot into a fully monitored client in one click, or import a results file straight into a new client — closing the gap between a pre-sales assessment and onboarding the client for real.
Feature
- →Promote snapshot to client: a saved snapshot can be promoted into a new monitored client, seeded with its findings, controls and score history — under your plan's client cap, with no stored credentials until you add a connection
- →Import as a new client: the import wizard adds a "New monitored client" mode alongside snapshot and attach, so results can onboard a client directly
- →Same trusted path: both reuse the live-scan reconcile/persist write, and the score is still recomputed server-side — never trusted from the file
v1.84.0
2026-07-10
Assessment tool: integrity hardening (Phase 1)
The one-time assessment tool now stamps every results file with a tamper-evidence digest and the portal publishes a verifiable checksum for the downloaded tool. This is the first of five planned improvement phases, focused on the trust boundary: proving a results file wasn't altered before it reaches your data, and giving operators a switch to lock down the public download endpoint.
Security
- →Results-file integrity: each file carries a SHA-256 digest over its contents; imports of a file altered after generation are rejected. Setting a shared
BEACON_ASSESS_SIGNING_KEY upgrades this to an HMAC signature the server verifies
- →Verifiable download: the Assessment page shows the SHA-256 of the exact tool bytes it serves, so a download can be checked with
shasum -a 256
- →Optional token-gated download:
BEACON_ASSESS_REQUIRE_TOKEN=true requires a short-lived signed token on the public tool endpoint; the portal mints one into the Cloud Shell command automatically
- →At-rest hygiene: the tool warns when
--store-identifiers writes cleartext identifiers, and import audit entries record the integrity and identifier status
v1.83.1
2026-07-10
Assessment page: make it clear results are viewable without uploading
The one-time assessment tool already writes a self-contained HTML report you can open in a browser, but the Assessment page read as if importing into Beacon was the only way to see results. The page now leads with the local report, adds a callout explaining that opening report.html needs no account or upload, and relabels the import step as optional — for keeping the result in the portal or attaching it to a client.
Design
- →Local report front and centre: the Assessment page and docs now make clear the tool produces an HTML report you open locally — importing into Beacon is optional, not required, to see the data
v1.83.0
2026-07-09
One-time assessment tool: run the full Azure scan once from a client tenant, then import the results
A new way to assess a tenant without onboarding it or storing its credentials — built for prospect and pre-sales checks. Download a small command-line tool from the new Assessment page, run it inside the client's Azure environment, and it executes the same full compliance check load the Beacon scan engine runs — locally, talking straight to Microsoft Graph and Azure Resource Manager. It writes a self-contained results file that you import back into Beacon, either as a standalone snapshot (a frozen record that is not a monitored client and uses none of your client allowance) or attached to an existing client (applied to its live posture exactly like a scan). The tool supports interactive device-code sign-in as well as app-registration secret or certificate credentials, and by default the results file carries only per-check counts, not resource identifiers. Beacon always recomputes the compliance score server-side on import, never trusting the file's own number.
Feature
- →Downloadable assessment tool: a single-file CLI that runs Beacon's full Azure check load once, inside a client's tenant, with no credentials ever sent to Beacon — it only produces a results file
- →Import as snapshot or into a client: save results as a standalone one-off record (no monitored client, no client-cap slot, no recurring scans) or apply them to an existing client's live findings, controls and score history
- →Flexible sign-in: interactive device-code login, or app-registration client secret / certificate — and an optional subscription for Azure resource checks (skipped cleanly when omitted)
- →Guided end to end: a command builder generates the exact run command with one-click copy, the tool prints phased progress and a boxed sign-in prompt as it runs, and each saved snapshot is click-through to its score breakdown, coverage and findings in the portal
- →Standalone in the client environment: the tool now also writes a self-contained HTML report you can open on the spot without uploading, a
--check-permissions preflight that lists exactly which Graph/ARM permissions are missing, a --print-setup generator for the app-registration script, and corporate HTTP-proxy support (HTTPS_PROXY / --proxy) covering both sign-in and scan traffic
- →Super-easy Azure deployment: new
--auth azure-cli and --auth managed-identity modes run the assessment in Azure Cloud Shell or on any Azure host with zero setup — no app registration, no secret, tenant auto-detected. A "Run it in Azure" card gives a one-paste Cloud Shell command, and a one-click Deploy to Azure button (Bicep/ARM) spins up a managed-identity container that runs the whole assessment for you
Security
- →No stored credentials: the tool runs entirely on your machine and the results file is the only thing Beacon ever ingests — identifiers (UPNs, resource ids) are collapsed to per-check counts unless you opt in with
--store-identifiers
- →Score recomputed server-side: the imported file's self-reported score is never trusted — Beacon recalculates it from the controls, and snapshots are labelled as self-reported
v1.82.0
2026-07-08
Sync one inventory source at a time
The per-client sources screen now lets you re-pull a single source on its own. Each source row has its own Sync button, so after fixing one connector's credentials you can refresh just that feed instead of re-running every other connector for the client. Only the row you clicked shows a spinner while it runs, and its feed health, last-success time and asset count refresh on completion. The whole-client refresh is still one click away — a Sync all sources button now lives in the screen header. Disabled or unconfigured sources have their per-row Sync button greyed out, and a source turned off for the client is still skipped rather than run.
Feature
- →Per-source Sync: a Sync button on each source row re-pulls just that one source for the client, without re-running the others — ideal after fixing a single connector's credentials
- →Per-row feedback: only the clicked row spins, and its health, last-success time and asset count refresh when it finishes
- →Sync all sources: the whole-client refresh moves to a header button; disabled and unconfigured sources have their per-row Sync greyed out
v1.81.0
2026-07-07
Configurable, per-client inventory sources: connect connectors in-app and turn any source on or off
Lifecycle inventory sources are now a findable, per-client control panel instead of an API-only chore. Open Configure sources from the Lifecycle page, pick a client, and see every source that can feed its software inventory with its connection status, feed health and asset count. All eight connector sources — ServiceNow, Topdesk, NinjaOne, Datto, Automox, Action1, Jamf and SCCM — can now have their credentials entered in-app, per client (including the ServiceNow CMDB table and Topdesk template fields), so client A and client B can hold different credentials for the same connector. A per-client enable/disable toggle lets you skip a source on sync without deleting its credentials — a disabled source no longer counts as a failing feed — and every source stays enabled by default, so nothing changes for existing clients until you turn one off. Azure-derived sources (Intune, Defender, Azure VMs) link straight to the client's Azure connection for setup.
Feature
- →Per-client sources screen: a new Configure sources panel lists every inventory source for a chosen client with its connection status, feed health and ingested asset count
- →Connect connectors in-app: enter credentials for all eight connectors — ServiceNow, Topdesk, NinjaOne, Datto, Automox, Action1, Jamf, SCCM — per client, including the ServiceNow CMDB table and Topdesk template fields (previously API-only)
- →Enable / disable per client: toggle any source on or off for a client; a disabled source is skipped on sync and no longer counts as a failing feed — sources stay enabled by default so existing clients are unchanged
- →Per-client credentials: different clients can hold different credentials for the same connector, while Azure-derived sources (Intune, Defender, Azure VMs) link to the client's Azure connection for setup
v1.80.0
2026-07-07
Honest by construction: a provenance firewall on the attestation, a coverage matrix, and opt-in ways to widen the net
The trust half of the full-landscape work. Every asset and fact now carries a source class — how it was obtained, not just which connector wrote it — and a one-directional provenance firewall makes the cyber-insurance attestation honest by construction: only instrumented, confident, matched data can populate a favourable answer, while declared, discovered, manual, community and low-confidence data are structurally barred from a favourable answer and appear only in the scope disclosure. A new coverage matrix (estate category × client) turns that same instrumented-vs-softer line into an at-a-glance grid of Instrumented / Partial / Declared-only / Blind chips, so a blind spot reads instantly instead of hiding inside a healthy total. And three opt-in, credential-gated reach extensions — shadow-SaaS discovery, a validated community catalog, and an on-prem collector-ingest seam — widen what Beacon can see without weakening any of that, because everything they surface is classified discovered or community and stays outside the firewall.
Feature
- →Coverage matrix: an estate-category × client grid of trust chips (Instrumented / Partial / Declared-only / Blind) so blind spots read at a glance
- →Opt-in shadow-SaaS discovery: enumerates a tenant's already-consented Entra OAuth grants / enterprise apps and records each as a discovered asset — off by default, per-client consent required
- →Validated community catalog: submissions map an unrecognised name to a product slug (names only, never dates) and stay pending — not resolving or alerting — until an admin validates them
Security
- →Provenance / attestation firewall: a single shared, one-directional gate — only instrumented, live, matched, above-confidence data can populate a favourable attestation answer; softer and low-confidence data is disclosed in scope but never counted
- →Fail-closed discovery & collector ingest: shadow-SaaS discovery needs a global flag AND per-client consent; the on-prem collector seam needs three independent gates (env flag, per-client token, scan-authorization) — missing any, it does nothing
- →PII-aware provenance: hand-entered edits are always stamped manual (never instrumented), so a self-asserted or inferred fact can never make an insurer answer look better
v1.79.0
2026-07-07
Manage everything: one device = one asset, a lifecycle stage for every item, and an actionable untracked bucket
The data-model half of the full-landscape work — turning "inventory Beacon happens to recognise" into "the whole estate, managed." The same device seen by many sources now collapses onto one managed asset via a deterministic identity ladder (cloud resource id → serial → Intune device id → Entra device id → MAC → hostname); strong identifiers auto-link, while ambiguous MAC/hostname-only overlaps are never auto-merged — they queue as possible duplicates for a human to confirm or split. Every discovered or untracked item is now a first-class managed asset — ownable, with a lifecycle stage (discovered → triaged → managed → renewing → retiring → retired) and a review/renewal date — so you can manage a thing on a calendar even with zero vendor EOL data, and stale items walk themselves toward retirement one step at a time. The untracked bucket gains a real Manage verb (promote, dismiss-as-noise, or clustered bulk triage), and the built-in collectors now report device identity more widely across Intune, Defender, Azure VMs, Jamf, SCCM and ServiceNow to feed the reconcile ladder.
Feature
- →Unified asset view & identity reconcile: a deterministic ladder collapses the same device across sources onto one asset; weak-only (MAC/hostname) matches never auto-merge — they queue as possible duplicates to confirm or split
- →Managed-unknown + lifecycle stages: every discovered/untracked item is an ownable, first-class asset with a stage and a review/renewal date — manageable with no vendor EOL data, and aged toward retirement as it goes stale
- →Actionable untracked bucket: a Manage verb — promote, dismiss-as-noise, or clustered bulk triage — so the blind spot is worked down in a few actions, not a per-row slog
- →Collector identity widening: Intune, Defender, Azure VM, Jamf, SCCM and ServiceNow collectors now report device serial/model/ids/MAC/hostname, so multi-source sightings reconcile cleanly onto one device
v1.78.0
2026-07-07
Lifecycle catalog & enrichment: no-deploy catalog fixes, opt-in web/AI enrichment, hardware warranty lookups and opt-in live remediation
The enrichment wave for lifecycle management — all of it behind guardrails. The product catalog is now data-driven: a wrong match or a missing product is a 30-second console edit (an org-scoped, audited catalog alias), not a code deploy, and promoting an untracked item re-tags and re-scores every matching asset at once. An opt-in, admin-enabled AI-assisted normalizer can propose candidate mappings for the names Beacon doesn't recognise — it is off by default, never emits end-of-life dates itself, and only ever writes low-confidence candidates a trusted feed must still confirm. Vendor hardware warranty / EoX lookups (Dell, Lenovo, HP and Cisco) turn the hardware refresh card into real per-device dates once an operator provisions each vendor's API credentials — until then each resolver simply does nothing and dates fall back to the curated base. And a real live remediation mode arrives as an opt-in, consent-gated capability: it actually pushes a fix via Intune / NinjaOne / Automox, but stays fail-closed (write-consent and remediation opt-in required), preserves maker/checker approval and the full audit trail, and keeps simulate as the default.
Feature
- →No-deploy catalog additions: admins add or edit org-scoped, audited catalog aliases from the console, and previously-untracked assets re-tag and re-score immediately
- →Opt-in AI-assisted normalizer: proposes candidate mappings for unmatched product names — off by default, never emits dates, and only writes low-confidence candidates a trusted feed must confirm
- →Vendor warranty / EoX lookups: Dell, Lenovo, HP and Cisco resolvers for real per-device hardware end-of-service dates, enabled per vendor with API credentials
Security
- →Opt-in live remediation, fail-closed: a real live dispatch mode (Intune / NinjaOne / Automox) that stays consent-gated, preserves maker/checker approval and audit, and keeps simulate the default until deliberately enabled
- →Enrichment stays gated: AI-proposed and web-discovered mappings are low-confidence by construction — visible but suppressed from alerts, tickets and attestations until a trusted feed and a human confirm them
v1.77.0
2026-07-07
Lifecycle from an operator's seat: an in-app report & attestation viewer, a searchable client picker, inline remediate and a calmer overview
A last-mile pass on the day-to-day of lifecycle management. The client report and the cyber-insurance attestation now open in a styled in-app viewer — no more raw API tabs — that you can print or save as PDF and hand straight to a client. The client selector is now type-ahead searchable, so you jump to the right client by name across a large portfolio and act on the one you're actually looking at. Closing an item out is lighter: marking it remediated is now a quick inline action with a short evidence note, separate from the heavyweight propose → approve → dispatch flow that remains for controlled, audited remediation. And the dense overview gets real hierarchy — a pinnable daily-glance metric strip, collapsible seasonal cards, a clickable Due this week tile, a month-grouped upcoming-EOL forecast, and an inline glossary that explains EOS vs EOL, KEV, EPSS and the risk score at the point of use.
Feature
- →In-app report & attestation viewer: a styled, printable preview (save-as-PDF) replacing the raw-URL tabs, ready to share with a client
- →Searchable client picker: a type-ahead selector for jumping to the right client across a large portfolio
- →Inline mark-remediated: a lightweight evidence popover to close an item out, separate from the heavyweight dispatch flow
Design
- →A calmer overview: a pinnable daily-glance metric strip with collapsible seasonal cards, a clickable Due this week tile and a month-grouped upcoming-EOL forecast
- →Inline glossary: hover-explained terms (EOS vs EOL, KEV, EPSS, risk score) at the point of use, so newcomers don't have to leave the page
v1.76.0
2026-07-07
Lifecycle at scale: bulk per-client config, sync progress, faster portfolio views and data retention & purge
The scale-to-30+ pass for lifecycle management. Onboarding a portfolio no longer means editing clients one at a time: business criticality and the end-of-life warning window can be set across a whole set of clients in a single action, with one batched recompute, and the warning window is now a first-class per-client field. A live sync-progress bar shows how far a multi-client sweep has got (done / total / failed) so you're not re-polling to guess whether it finished. Portfolio views stay flat as client counts grow — the by-product rollup is now computed in SQL and the coverage payload is paginated — and a nightly prune keeps snapshot history from growing unbounded. Alongside it, lifecycle gets a real data-hygiene story: configurable retention, automatic redaction of stale hardware device names (PII), and a per-client purge for offboarding and data-subject erasure requests.
Feature
- →Bulk per-client config: set business criticality and the (now first-class) end-of-life warning window across many clients at once, with a single batched recompute
- →Sync progress: a live progress bar for multi-client sync sweeps showing done / total / failed, instead of re-polling to guess
- →Portfolio-scale views: the by-product breakdown is now a SQL rollup and the coverage payload is paginated, keeping the dashboard flat from 30 to 100+ clients
Security
- →Data retention & PII redaction: configurable snapshot / hardware-identifier retention, plus automatic redaction of a stale device's name (the most identifying field) while keeping serial and model
- →Per-client purge (offboarding / DSAR): permanently delete all of a client's lifecycle data in one audited action, plus a nightly prune of history past the retention window
v1.75.0
2026-07-07
Lifecycle coverage & honesty: the full end-of-life corpus, an untracked bucket, and an attestation that tells the truth
The coverage-and-liability pass for lifecycle management, and the biggest trust change to date. Beacon used to quietly track only a small curated catalogue and silently drop everything it didn't recognise. No longer. Software outside the curated set is now looked up against the full public endoflife.date corpus (hundreds of products), so far more of your estate resolves to real end-of-life dates — with each such match flagged low-confidence ("needs review") and held back from alerts, tickets and attestations until it's confirmed, so a fuzzy match can never silently drive a false alarm. Anything Beacon still can't match is never discarded: it lands in a first-class, countable untracked bucket you can promote to tracked or dismiss, so you always know the size of your blind spot. And the cyber-insurance attestation is now honest by construction — every answer is derived from actual state (answering "insufficient evidence" rather than a hardcoded "yes" when a fact can't be substantiated), and every attestation and client report carries a coverage / scope disclosure of what wasn't assessed and what still needs review.
Feature
- →Full end-of-life corpus: products outside the curated catalogue now resolve against the entire public endoflife.date dataset, flagged low-confidence ("needs review") until confirmed
- →Untracked bucket: unmatched software is surfaced as a countable "seen but not tracked" bucket you can promote to tracked or dismiss — never silently dropped again
Security
- →Honest attestation: insurance-questionnaire answers are derived from real SLA-tracking and plan state, answering "insufficient evidence" instead of a hardcoded "yes" when a fact can't be substantiated
- →Coverage / scope disclosure: every attestation and client report now states how many products fell outside monitored scope and how many items still need review, so a limitation is disclosed rather than passing silently
- →Low-confidence never inflates posture: only confident, reviewed rows count toward a favorable attestation answer — discovered/unreviewed matches can neither raise a false alarm nor clear a real one
v1.74.0
2026-07-06
Lifecycle at scale: trustworthy EOL dates, a rebillable business review, cyber-insurance attestation and hardware refresh tracking
The moat-and-scale tier for lifecycle management. End-of-life dates are now trustworthy: the daily refresh re-fetches upstream dates concurrently and passes each through a change-guard — an implausible upstream update (a date nulled out, a multi-year jump, an ended flag reversed) is rejected and flagged instead of silently rewriting the knowledge base and flipping crossings across every client. A related fix gives repeated EOL crossings a stable ticket reference, so a re-detected crossing updates its existing PSA ticket rather than opening a fresh duplicate on every sweep. The quarterly business review is now rebillable: the scheduled QBR draws the full lifecycle posture — risk-ranked items, estimated budget and the upcoming-EOL forecast — from the same source as the standalone client report, so it carries a costed upgrade story you can bill. A new cyber-insurance attestation export maps a client's live EOL posture (unsupported software, CISA KEV exposure, remediation-SLA adherence) to named renewal-questionnaire fields. And hardware refresh tracking arrives: where a source carries device identity (Intune), Beacon now forecasts device end-of-service-life so refreshes become a planned, billable event.
Feature
- →Rebillable business review: the scheduled QBR now carries the full lifecycle posture — risk-ranked items, estimated remediation budget and upcoming-EOL forecast — from one shared data source
- →Cyber-insurance attestation: a per-client export mapping unsupported-software, KEV exposure and SLA adherence to named insurer questionnaire fields
- →Hardware refresh forecast: device serial/model tracking with curated end-of-service-life, surfacing machines due for refresh (Intune today; a hardware card on the Lifecycle page)
- →Faster daily refresh: upstream EOL re-fetches now run with bounded concurrency instead of one at a time
Fix
- →EOL change-guard: implausible upstream date changes are rejected and flagged instead of overwriting trusted dates and mass-firing crossings
- →No more duplicate lifecycle tickets: repeated EOL crossings reuse a stable PSA ticket reference, so a re-detected crossing updates rather than duplicates
v1.73.0
2026-07-06
Lifecycle management, ready to adopt and sell: feed health, portfolio sync, safer triage, per-surface consent and plan packaging
An adoption-and-trust pass on lifecycle management. Every inventory feed now has persisted health: the coverage panel flags any source whose last sync failed or has gone stale (no success in three days) with how long ago it last succeeded, so a silently-dead Intune or RMM feed is visible instead of surfacing only when a report looks wrong — and a new Sync stale sources button re-pulls every affected client across the portfolio in one click. Triage is safer: completing an item now goes through the evidence-capturing remediation dialog only (no more one-click "Remediated" inline), suppressing actions (snooze / exception) confirm before they hide work, and every inline change offers a one-tap Undo. Automated dispatch methods are now disabled up front in the method picker when a client has no write-consent, rather than only failing at execute. Under the hood, tenant write-consent is now recorded per surface (ARM subscription vs. Graph tenant) instead of one blanket grant — existing grants are preserved unchanged — so a future automated slice can be authorized narrowly without re-consenting customers. Finally, lifecycle management is now packaged as a paid capability with a first-run onboarding panel; workspaces already using it keep their access.
Feature
- →Per-source feed health: the coverage panel shows failing and stale inventory feeds (with last-success time), so a dead connector is caught early
- →Portfolio sync sweep: a Sync stale sources button re-pulls every client with a stale or failing feed in the background, plus a nightly leader-elected sweep
- →Safer triage: completion is dialog-only with evidence, snooze/exception confirm first, and inline changes offer one-tap Undo
- →First-run onboarding: a guided empty-state points a new workspace at source setup instead of a wall of zeros
- →Plan packaging: lifecycle visibility, multi-source inventory, budgets/projects/reports and automated dispatch are now plan entitlements — existing users grandfathered
Security
- →Per-surface write-consent: tenant write-consent is recorded separately for ARM and Graph surfaces, so authorization can be granted narrowly; existing grants are preserved and dispatch stays simulate-only
- →Dispatch clarity: automated remediation methods are disabled at selection without write-consent, so the fail-closed state is obvious before execute
v1.72.0
2026-07-06
The remediation queue comes alive: automatic SLA due dates, tunable & clearer risk, and two correctness fixes
A trust-and-correctness pass on lifecycle management. The biggest change: automatic SLA due dates. Due dates were only ever set by hand, so the remediation queue's SLA columns and the overdue escalation were empty for most assets. Turn on auto due dates in the new Lifecycle settings and Beacon assigns each actionable asset a due date from policy — exploited-and-unsupported soonest, then unsupported, then approaching-EOL on your important clients — with a preview of the blast radius before you enable it and a guarantee that a manually-set date is never overwritten. The risk score is now clearer and tunable: a KEV badge marks actively-exploited assets at a glance, the score is coloured consistently across the Lifecycle page and the remediation queue, and an org can adjust the weighting (exploitation vs. criticality vs. exposure vs. footprint) to match its risk appetite. Two correctness fixes ship alongside: the SLA-breach escalation no longer opens PSA tickets for decommissioned or snoozed assets, and the propose→approve→execute remediation state machine is now transaction-guarded against concurrent double-execution.
Feature
- →Automatic SLA due dates: policy-derived due dates for actionable assets (opt-in, with a dry-run preview) so the cockpit's SLA/overdue view is populated without hand-entry; manual dates always win
- →Tunable, clearer risk score: per-org weight emphasis, a KEV/exploited badge, a consistent colour scale across pages, and a plain-language legend
- →Lifecycle settings: a new org settings panel for auto due dates, SLA windows and risk weighting (admin-editable)
Fix
- →No more spurious SLA tickets: the overdue escalation no longer fires PSA tickets for stale (decommissioned) or actively-snoozed assets
- →Race-safe remediation: approve/execute/cancel are transaction-guarded so a concurrent double-execute can't dispatch twice
v1.71.0
2026-07-06
Client-facing lifecycle reports, a weekly end-of-life forecast digest & an audited (still fail-closed) automated-dispatch path
Three additions round out lifecycle management. First, a client-facing lifecycle report: pick a client on the Lifecycle page and generate a branded, print-friendly summary — current status mix, highest-risk items, what reaches end-of-life in the next 90 days, the open remediation workload and an estimated remediation budget — ready to share or fold into a QBR. Second, a weekly end-of-life forecast digest is pushed proactively to your Slack / Teams / email channels: what's about to lapse and what remediation work is already overdue, so upgrades get planned before anything breaks (it's a planning digest, so it never raises a PSA ticket). Third, automated remediation dispatch (Intune / NinjaOne / Automox / Action1 / Datto) gains a real, audited consent framework — but stays fail-closed: dispatch is refused unless the client has an explicit tenant write-consent grant and remediation opt-in, and even then Beacon runs in simulate mode by default, recording what it would do without ever writing to a customer tenant. The remediation dialog now shows exactly which guardrail is blocking.
Feature
- →Client-facing lifecycle report: a branded, print-friendly per-client summary (status mix, top risks, 90-day EOL forecast, remediation workload & estimated budget) to share or drop into a QBR
- →Weekly end-of-life forecast digest: a proactive summary of what's about to reach end-of-life plus overdue remediations, delivered to Slack / Teams / email on a cadence
Security
- →Audited, fail-closed dispatch consent: automated remediation requires an explicit tenant write-consent grant and opt-in, defaults to a no-write simulate mode, and surfaces the exact blocking guardrail — Beacon never writes to a customer tenant without a consented, deliberate path
v1.70.0
2026-07-06
The remediation queue: one cross-client work list with owners, due dates & SLA status
Lifecycle triage was per-client and per-asset; now there's a single Remediation queue — the portfolio cockpit an MSP lead runs their week from. It lists every outstanding end-of-life fix across all clients with its owner, due date and SLA state (on-track, due-soon, or overdue). Headline tiles count what's actionable, overdue, due this week, unassigned, and assigned to you, and each doubles as a one-click filter. You can filter to a specific engineer (or just your own work), toggle overdue-only, assign an owner and set a due date inline, and bulk-assign a whole selection at once. Due dates drive the same SLA-breach escalation that already opens PSA tickets, so nothing quietly slips.
Feature
- →Portfolio remediation queue: a cross-client work list of every outstanding end-of-life fix, sorted by risk, with owner / due date / SLA columns
- →Ownership & assignment: assign an engineer and set a due date per item or across a bulk selection; filter by assignee, “assigned to me”, or unassigned
- →SLA visibility: on-track / due-soon / overdue state per item and headline tiles for actionable, overdue, due-this-week, unassigned and your own workload
v1.69.0
2026-07-06
Remediation you can drive end-to-end: propose → approve → record with evidence, PSA/ITSM ticket links, an explained risk score & a 7-day change feed
The remediation-control workflow is now fully in the portal. From any end-of-life asset you can propose a fix (with a generated runbook), approve it, and record it as done with evidence — all without Beacon ever writing to a customer tenant. Automated dispatch (Intune / NinjaOne / Automox / Action1 / Datto) stays fail-closed: the button is shown but the API refuses it with a clear reason until a per-tenant write-consent path exists, so nothing acts on a tenant behind your back. Each remediation can now be linked to a PSA/ITSM ticket (reference plus a click-through deep link), tying a Beacon-driven fix back to your own service desk. The risk score is now explained — hover any score to see exactly how end-of-life status, active exploitation (CISA KEV / EPSS), client criticality, exposure and install footprint add up — and you can filter the inventory by triage state. Finally, a “What changed (last 7 days)” feed on the Lifecycle page surfaces recent status transitions at a glance.
Feature
- →Remediation-control UI: propose a fix, approve it, and record it as done with evidence from any asset — automated tenant dispatch stays fail-closed and surfaces its refusal rather than hiding it
- →PSA/ITSM ticket linkage: attach a service-desk ticket reference and deep link to a remediation and jump straight to it from Beacon
- →Explained risk score: hover any score for the per-factor breakdown (status, exploitation, criticality, exposure, footprint), and filter the inventory by triage state
- →7-day change feed: a “What changed” panel on the Lifecycle page lists recent end-of-life status transitions across the portfolio
v1.68.1
2026-07-05
Lifecycle polish: end-of-life we no longer miss, and visible trust signals
Two follow-ups to the trusted-lifecycle work. First, boolean end-of-life recovery: some products are published as “already end-of-life” without a specific date — these previously showed as unknown and were quietly missed. They now correctly resolve to unsupported, so nothing that's actually dead slips through. Second, the trust signals are now visible on the Lifecycle page: rows whose product match is low-confidence carry a “review” badge (and stay out of alerting until you confirm them), and inventory that's been aged out because a source stopped reporting it carries a “stale” badge — so it's obvious at a glance which rows to trust.
Feature
- →Boolean-EOL recovery: products flagged end-of-life without a concrete date now resolve to unsupported instead of unknown
- →Visible trust signals: “review” badges on low-confidence matches and “stale” badges on aged-out inventory on the Lifecycle page
v1.68.0
2026-07-05
Lifecycle you can trust and act on: vendor-gated matching, stale-asset aging, faster recompute, a push API & fail-closed remediation control
Following a cross-functional review, this release makes lifecycle management trustworthy and actionable. Product matching is now vendor-gated and confidence-scored, so look-alikes like “Windows Media Player” or “LibreOffice” are no longer mistaken for the Windows OS or Microsoft Office — and low-confidence matches are held back from alerting until reviewed, so the tool stops crying wolf. Assets a source stops reporting are aged out as stale and excluded from counts, risk and forecasts, so decommissioned machines don't inflate your posture. Under the hood the daily recompute is now incremental and memoized — a steady-state sweep writes almost nothing — so it scales with your portfolio. A new ingestion API lets an agent, script, or webhook push inventory directly. And remediation gains a control framework: propose an upgrade with a generated runbook, get it approved, and record the work with evidence — while automated dispatch to a customer tenant is fail-closed, so Beacon never writes to a tenant without an explicit consent path.
Feature
- →Trusted asset graph: vendor-gated, word-boundary product matching with a confidence score; low-confidence matches are held back from alerting until reviewed
- →Stale-asset aging: inventory a source stops reporting is aged out and excluded from counts, risk, forecast and alerts so ghosts don't inflate posture
- →Remediation control: propose → approve → record-with-evidence, with a generated runbook; automated tenant dispatch is fail-closed (never writes without a consent path)
- →Ingestion API: push inventory for a client from an external agent, script, or webhook, through the same reconciliation pipeline
Performance
- →Incremental recompute: product/EOL resolution is memoized and only changed rows are written, so the daily sweep scales across a large portfolio
v1.67.0
2026-07-05
Lifecycle management becomes an MSP lifesaver: risk scoring, upgrade paths, remediation budgets, evidence trail, blind-spot detection & bulk actions
Lifecycle management moves from “tells you what's end-of-life” to “tells you what matters, what to do, and what it costs.” Every asset now carries a composite 0–100 risk score — folding end-of-life status, active exploitation (CISA KEV refined by FIRST.org EPSS probability), the client's business criticality, exposure and install footprint — so the portfolio sorts by what to fix first. Each unsupported item shows an upgrade path: the recommended target, one-line migration guidance, and an ESU-bridge hint where paid Extended Security Updates can buy time. On the commercial side, an estimated remediation budget (licence + labour + ESU) rolls up per client and a scoped, costed upgrade plan becomes the basis of a client proposal, while a daily evidence trail snapshot gives defensible history for audits and cyber-insurance. The tool is now honest about its blind spots — flagging clients with no inventory — and MSP-scale to operate: bulk triage actions, per-client policy (criticality & warning window), and automatic escalation of overdue remediations and expired snoozes.
Feature
- →Composite risk score: 0–100 per asset from status, CISA KEV / EPSS exploitation, business criticality, exposure and footprint — the inventory sorts by it
- →Upgrade-path intelligence: recommended target, migration guidance and ESU-bridge hints on every unsupported / approaching-EOL item
- →Remediation budgets & upgrade plans: per-client cost estimates (licence/labour/ESU) and a scoped, costed plan ready for a proposal
- →Evidence trail: a daily lifecycle posture snapshot per client for audit / cyber-insurance history
- →Blind-spot detection & reconciliation: flags clients with no inventory and surfaces assets reported by multiple sources
- →Bulk actions, policy & escalation: triage many items at once, set client criticality & warning window, and auto-escalate overdue remediations / expired snoozes
- →Wider coverage: Fortinet FortiOS firmware end-of-life via endoflife.date
v1.66.0
2026-07-05
Lifecycle management becomes autonomous: daily EOL sweeps, a 90-day forecast, a triage queue, six new inventory sources & exploit-aware alerts
Lifecycle management now runs itself. A daily background sweep refreshes end-of-life dates and re-checks every client, so software that crosses into unsupported purely because a date passed on the calendar is caught — and alerted — the same day, without waiting for that tenant's next scan. A new “Upcoming end-of-life” forecast shows what expires in the next 90 days so you can plan upgrades before anything breaks, and a per-item triage queue lets you acknowledge, plan an upgrade, snooze, mark remediated, or accept an exception (snoozed and exception items stop generating noise until they come due). Coverage expands well beyond Azure: Azure VM operating systems, endpoint RMM tools (NinjaOne, Datto RMM, Automox, Action1), Jamf Pro for Apple fleets, and SCCM/MECM for on-prem Windows now all feed the same view, and an authoritative Microsoft product-lifecycle source fills in dates the public data can't. Finally, when unsupported software also appears on CISA's Known Exploited Vulnerabilities list, its alert is escalated to critical — so what's actually dangerous rises to the top.
Feature
- →Daily automatic EOL re-evaluation: a scheduled sweep refreshes the knowledge base and recomputes every client, so calendar-driven end-of-life transitions alert the day they happen
- →90-day EOL forecast: an “Upcoming end-of-life” view lists what expires soon, soonest first, for proactive upgrade planning
- →Triage & remediation queue: acknowledge, plan, snooze, remediate or accept an exception on each item — snoozed / exception items are suppressed from alerts and the digest
- →Six new inventory sources: Azure VM operating systems, RMM tools (NinjaOne, Datto RMM, Automox, Action1), Jamf Pro (macOS/iOS) and SCCM/MECM (on-prem Windows)
- →Authoritative Microsoft dates: a Microsoft product-lifecycle source fills in Office, SharePoint and modern .NET dates the public dataset expresses only as flags
- →Configurable policy: tune the “approaching EOL” warning window, and opt PSA channels into tickets for approaching-EOL, not just unsupported
Security
- →Exploit-aware escalation: unsupported software that also appears on CISA's Known Exploited Vulnerabilities catalog escalates its alert to critical severity
v1.65.20
2026-07-05
Lifecycle management goes set-and-forget: EOL alerts & auto-tickets, richer coverage, QBR reporting, sync-now
Lifecycle management now works for you in the background so a sysadmin never has to watch the page. When software crosses into unsupported (end-of-life) or starts approaching end-of-life, Beacon fires a summarised alert to every subscribed channel — Slack, Teams, email — and to your PSA, ServiceNow or Topdesk, opening a ticket in the queue you already work from. Alerts fire once, on the change itself, so there's no noise. Those transitions also land on the drift timeline and in the weekly portfolio digest, and every client's Quarterly Business Review now includes a Software Lifecycle section for client-facing conversations. Coverage got deeper too: applications with standard versioning (Node, Python, PHP, MySQL, .NET, PostgreSQL) now resolve to a real end-of-life status instead of “unknown”, and the ServiceNow table / Topdesk asset template are configurable for non-standard setups. Finally, a Sync now control refreshes a chosen client's inventory on demand instead of waiting for the next scan.
Feature
- →Proactive EOL alerts & auto-tickets: new Unsupported software and Approaching end-of-life events fan out to webhooks and every notification channel, including PSA/ServiceNow/Topdesk ticket creation — self-deduping, fired only on the transition
- →Drift timeline & weekly digest: lifecycle status changes appear alongside compliance regressions, and unsupported / approaching-EOL counts ride the weekly portfolio digest
- →Lifecycle in QBRs: each client's Quarterly Business Review gains a Software Lifecycle section with counts and the top unsupported products
- →Application EOL resolution: Node, Python, PHP, MySQL, .NET and PostgreSQL versions resolve to a real end-of-life status instead of “unknown”
- →Sync now & configurable ITSM: refresh a client's inventory on demand, and point the ServiceNow table / Topdesk asset template at a non-standard setup
v1.65.19
2026-07-05
Topdesk completes the lifecycle inventory set — four connectors, one view
The fourth and final launch connector is here: Topdesk. If you've connected a Topdesk environment (the same channel Beacon uses to raise incidents), each Azure scan now reads its Asset Management software assets, aggregates them per product and version with an install count, and resolves each to an end-of-life status. That rounds out the lifecycle inventory set — Microsoft Intune, Microsoft Defender for Endpoint, ServiceNow and Topdesk now all feed the same Lifecycle view, each tagged by origin and every one fail-safe: a source with no permission, no configured channel, or no data simply contributes nothing and never affects the compliance scan. Between endpoint tooling (Intune, Defender) and your ITSM/CMDB systems of record (ServiceNow, Topdesk), Beacon can now build a genuinely complete picture of what software is running across a client's estate — and flag what's unsupported or about to be.
Feature
- →Topdesk asset inventory connector: reads Software assets from a connected Topdesk environment's Asset Management during each Azure scan, aggregates them per product and version, and resolves each to its end-of-life status
- →Four sources, one Lifecycle view: Intune, Defender, ServiceNow and Topdesk inventory now all feed the same page, each tagged by origin and independently fail-safe
- →Reuses your existing channel: no new configuration — the connector uses the Topdesk notification channel's credentials and honours its client/org scope
v1.65.18
2026-07-03
Lifecycle management reaches beyond Microsoft: ServiceNow CMDB inventory
Lifecycle tracking now draws on your ServiceNow CMDB as well. If you've connected a ServiceNow instance (the same channel Beacon uses to raise incidents), each Azure scan now reads its Software Asset Management inventory — one row per product and version, with an install count — and folds it into the lifecycle view alongside the Intune and Defender feeds, resolved against the same end-of-life knowledge base. This brings in software an MSP tracks in ServiceNow that endpoint tooling might miss, and it needs no new setup: Beacon reuses the existing ServiceNow channel's credentials and scope (a client-specific channel maps to that client; an org-wide channel applies across the org). Like every connector it's fail-safe — no ServiceNow channel, no Software Asset Management data, or an unreachable instance simply contributes nothing, and inventory stays tagged by source so you can filter to just ServiceNow on the Lifecycle page.
Feature
- →ServiceNow CMDB inventory connector: reads the Software Asset Management install table from a connected ServiceNow instance during each Azure scan and resolves each product version to its end-of-life status
- →Reuses your existing channel: no new configuration — the connector uses the ServiceNow notification channel's credentials and honours its client/org scope
- →Third source, one view: Intune, Defender and ServiceNow inventory now feed the same Lifecycle page, each tagged by origin and fail-safe
v1.65.17
2026-07-03
Lifecycle management adds a second inventory source: Microsoft Defender for Endpoint
Hot on the heels of the Intune connector, lifecycle management now also draws on Microsoft Defender for Endpoint. During each Azure scan, Beacon queries Defender's vulnerability-management software inventory and folds every device's operating systems and applications — with versions and device counts — into the same lifecycle view, resolved against the end-of-life knowledge base. Defender's coverage often reaches software Intune's app inventory doesn't, so the two together give a fuller picture of what's actually installed across a client's estate. Like every connector it's fail-safe and needs no new plumbing beyond the Defender API permission: if a tenant isn't onboarded to Defender or hasn't granted the permission, that source simply contributes nothing and the scan is unaffected. Inventory from both sources is tagged by origin, so you can still filter to just Intune or just Defender on the Lifecycle page.
Feature
- →Defender for Endpoint inventory connector: Beacon reads Defender's vulnerability-management software inventory during each Azure scan and resolves each OS build and app version to its end-of-life status
- →Aggregated by version, tagged by source: devices are rolled up per software version with an install count and labelled as Defender-sourced, so you can filter the Lifecycle view by origin
- →Fail-safe by design: tenants without Defender onboarding or the Defender API permission simply contribute no inventory — the compliance scan is never affected
v1.65.16
2026-07-03
Lifecycle management goes live with Intune: automatic OS & app inventory, EOL status per device fleet
Lifecycle management now populates itself. The first inventory connector — Microsoft Intune — is live: during each Azure scan, Beacon reads your Intune-enrolled devices and their detected applications straight from Microsoft Graph (reusing the scan's existing token, so there's nothing new to configure), then resolves every Windows build and app version against the lifecycle knowledge base. Your Lifecycle page fills with real data: Windows 10 / 11 feature updates mapped to their end-of-servicing dates and aggregated by version (a fleet of 40 machines on one build shows as a single row with a count), plus browsers, Office, runtimes and databases tracked from the same feed. If the Intune permission isn't granted or a tenant isn't enrolled, the scan is unaffected — inventory simply stays empty. Manual and CSV entry still work alongside it, and the remaining connectors (Graph, Defender, ServiceNow, Topdesk) drop into the same inventory as they come online.
Feature
- →Intune inventory connector: device OS builds and detected applications are collected from Microsoft Graph during each Azure scan and ingested into lifecycle — no extra credentials or setup
- →Windows build → release mapping: Windows 10 and 11 feature-update builds resolve to their published end-of-servicing dates, so out-of-support and soon-to-expire devices surface automatically
- →Aggregated by version: devices on the same OS build roll up into one inventory row with an install count, keeping the Lifecycle view readable across large fleets
- →Application tracking: detected apps that map to a known product (browsers, Office, .NET, databases, runtimes) are tracked from the same Intune feed
v1.65.15
2026-07-02
One-click remediation, hardened end to end: in-product write access, honest availability, and self-healing hand-offs
This release finishes hardening one-click remediation from onboarding through to cleanup. Granting and testing the separate, least-privilege “write” Entra app now happens entirely in-product: a client's In-product remediation execution card leads with a write-access readiness checklist and two new actions, Grant write access (a one-click, tenant-scoped admin-consent flow that stores only a consent timestamp, never a secret, and refuses a consented tenant that doesn't match the connection) and Test write access (a real per-scope ARM/Graph probe with a green/red result and a fix hint). On top of that, every finding's “1-click fix” badge and Run-fix availability now come from the same seven guardrails the executor itself enforces — catalog, executor flag, write app, write consent, opt-in, hand-off-only, category — so the UI never promises a fix it can't deliver, and a new Remediation coverage card on each client shows the same breakdown at a glance: how much of what's open is one-click fixable, and exactly why the rest isn't. Approvals now have real teeth too: a 30-minute approval window is auto-expired by an hourly sweep, abandoned drafts auto-cancel after two weeks, and a hand-off closes itself the moment a later scan confirms its finding is actually resolved — no more manually auditing tickets nobody remembered to close. Hand-off delivery now reaches notification channels as well as webhooks, refuses to dispatch into the void when nothing is subscribed, and ships three new operational events. Underneath all of it, every remediation action endpoint is now defined spec-first in the OpenAPI spec with generated, typed clients.
Feature
- →Grant write access in-product: a one-click admin-consent flow for the separate write app, scoped to the client's tenant, with a signed round-trip and an open-redirect guard back into Beacon
- →Write-access readiness checklist: the execution card now shows executor, write-app, consent and per-scope probe status at a glance, with a “how to fix” line on anything red
- →Test write access: a per-scope health probe (ARM + Graph) that proves tokens and RBAC actually work before you rely on live execution
- →Documentation: the auto-fix permissions guide now covers granting and testing write access from the client page
Feature
- →Hand-off reaches notification channels too: approving a fix now fans the hand-off out to subscribed Slack/Teams/email channels as well as raw webhooks, and the delivery summary reports how many of each actually received it
- →Zero-receiver guard: approving a fix with nothing subscribed to
remediation_handoff now fails closed with a setup hint instead of silently reaching no one; an admin can explicitly “hand off anyway” to record it, audited
- →Three new remediation events:
remediation_executed, remediation_failed and remediation_reverted are now subscribable on webhooks and notification channels, alongside the existing remediation_handoff
- →Approval TTL auto-expiry: an admin approval is valid for 30 minutes; an hourly sweep now cancels anything left unused past it, and abandoned proposed/previewed drafts auto-cancel after 14 days
- →Hand-offs close themselves: once a later scan confirms the finding a hand-off targeted is resolved, Beacon marks the action
audited automatically instead of leaving it for someone to notice
- →Truthful Run-fix availability: the “1-click fix” badge and every Run-fix call are now driven by a live seven-guardrail evaluation instead of a static list, with the failing guardrail(s) available to explain why a fix is hand-off only
- →Remediation coverage card: a client's Remediation tab now leads with “how much of what's open can Beacon fix, and how” — auto-fixable / script-assisted / playbook-only / manual buckets, with a per-check breakdown of exactly which guardrail is blocking in-product execution
- →Developer: propose/preview/approve/hand-off/execute/revert plus opt-in and write-consent are now defined spec-first in the OpenAPI spec, with generated Zod validation and typed TanStack Query hooks replacing hand-rolled client wiring
Security
- →Cross-tenant consent refused: the consent callback rejects and audits any grant whose consented tenant doesn't match the client's connection, and uses a distinct signing derivation so a read-consent link can never be replayed on the write flow
- →Honest fail-closed execute: attempting to execute a fix on a connection that is opted in but hasn't been granted write consent now returns an instant, clear refusal instead of a late token error, and hand-off stays available
v1.65.14
2026-07-01
Lifecycle management: track End-of-Life and End-of-Support software across your clients
A new Lifecycle area, alongside Posture, that answers a question MSPs kept asking: “which of my clients are running software that is unsupported, or about to be?” Beacon now tracks the operating systems, applications, databases and runtimes installed in each tenant and matches every version against published vendor lifecycle dates, flagging anything unsupported (End-of-Life passed — no more security updates) or approaching End-of-Life (within 180 days, or already past mainstream support). The portfolio view rolls up the whole estate — how many assets are unsupported, how many clients are at risk, and which products need attention first — with a filterable inventory beneath it. Inventory is source-agnostic: it’s designed to be fed by Intune, Microsoft Graph, Defender, ServiceNow and Topdesk, with manual and CSV entry available today. End-of-Life dates come from a curated dataset of high-value products (Windows, Windows Server, SQL Server, Exchange and more) automatically topped up from the public endoflife.date dataset.
Feature
- →Lifecycle portfolio view: a new Lifecycle page shows supported / approaching-EOL / unsupported counts, clients at risk, and a “products needing attention” roll-up across every tenant
- →Software inventory with EOL status: a filterable inventory (by status, source and search) resolves each installed version to a lifecycle status and shows its End-of-Life date
- →Automated EOL dates: a curated lifecycle dataset for high-value products, automatically extended from endoflife.date, so coverage grows without manual upkeep
- →Source-agnostic inventory: Intune, Graph, Defender, ServiceNow, Topdesk and manual/CSV all feed the same inventory, tagged by source and filterable on the Lifecycle page
- →New documentation: a Lifecycle management guide covering statuses, inventory sources, and how EOL dates are resolved
v1.65.13
2026-07-01
Fixed garbled arrows and dashes in remediation steps
The step-by-step remediation guidance shown in a finding's detail foldout had garbled characters — arrows (→) and dashes rendered as sequences like → because the underlying playbook text had been double-encoded (UTF-8 mistakenly interpreted as Windows-1252). Every affected checklist step now shows the intended arrows, en-dashes and em-dashes. No wording changed, only the corrupted characters were repaired.
Fix
- →Readable remediation steps: repaired mojibake in the remediation playbook text so arrows and dashes in the step-by-step foldout render correctly instead of as stray symbols
v1.65.12
2026-07-01
Portfolio drift fixes, a collapsible per-check roll-up, and a clearer privacy toggle
A round of polish across the Posture and client views. The Posture › Drift portfolio timeline now shows real cross-client regression and resolution history in the demo instead of appearing empty. On a client's Findings tab the per-check “Remediation readiness” roll-up is now collapsed by default — it's a summary, so the actionable findings list (where you assign, acknowledge and suppress individual issues) reads first. The per-client data-minimisation toggle now explains itself when a client has no connected tenant yet instead of sitting silently greyed out, and the “Beta / Test mode” banner is now limited to demo accounts so real accounts aren't told their changes won't stick.
Fix
- →Portfolio drift populates: the demo now seeds posture regression/resolution events, so the Posture › Drift timeline shows cross-client history instead of a permanently empty feed
- →Privacy toggle no longer dead-ends: the data-minimisation control now shows a clear message when a client has no connected tenant (or while loading) rather than a permanently disabled switch with no explanation
- →Beta banner scoped to demos: the “Beta / Test mode — no real charges” strip now appears only in demo accounts, so real accounts aren't wrongly warned that changes won't persist
Design
- →Collapsible per-check roll-up: on the client Findings tab the “Remediation readiness” summary is collapsed by default, putting the assignable findings list first
v1.65.11
2026-06-29
Data-minimisation for findings, email-auth domain checks, and an auto-fix permissions guide
A privacy-first release. Beacon now defaults to not storing the specific identities behind a finding: after a scan it records an aggregate — "3 users have MFA disabled" — plus a pointer to the remediation script to enumerate them yourself, keeping customer user lists out of Beacon's database. An admin can opt in per client to store and display the actual identities, and turning the option back off scrubs anything already stored. The domain scanner gains an email-authentication category (SPF, DMARC, DKIM, MTA-STS) — the records that stop attackers spoofing a domain in phishing — and there's a new documentation page laying out exactly which Azure permissions an admin grants to enable in-product auto-fix.
Security
- →Data minimisation by default: resource identifiers (e.g. user UPNs) are no longer stored unless an admin opts in per client; findings show an aggregate count plus a script to enumerate the affected resources
- →Scrub on opt-out: turning the option off collapses and removes any identifiers already stored from earlier scans
Feature
- →Email authentication checks: the domain scanner now grades SPF, DMARC (presence and enforcement), MTA-STS and DKIM, alongside the existing TLS/DNSSEC/HTTPS checks
- →Auto-fix permissions guide: a new docs page details the separate write app, the Graph and ARM permissions per fix, and the layered approval locks
v1.65.10
2026-06-29
Opt-in one-click remediation, plus weekly portfolio digests and attestation reminders
Beacon stays read-only by default, but an org admin can now enable in-product remediation per client: choose which categories are eligible and let an approved fix be applied directly to the tenant instead of only handed off as a ticket. Safety is layered — a fix is written only when the per-client opt-in is on, the category is enabled, the platform executor is provisioned, and an admin has explicitly previewed and approved that exact change. There is no automatic remediation. After a fix Beacon re-verifies the control and only resolves the finding if it confirms closure. Separately, the weekly portfolio digest now actually sends — a once-a-week summary to the org owner of score movement, SLA breaches, and manual attestations due for review.
Feature
- →Opt-in in-product remediation: a new admin-only control on each client's Remediation tab enables direct, approved fixes per category — off by default, and never bypassing the mandatory per-fix admin approval
- →Weekly portfolio digest: the org owner now receives a once-a-week portfolio summary (average score, biggest movers, open SLA breaches)
- →Attestation reminders: manual framework controls that are overdue or due within two weeks are now listed in the weekly digest, so stale evidence gets chased before an audit relies on it
Security
- →Layered write safety: live tenant writes require, in addition to admin approval, an explicit per-client opt-in, a per-category enable, and a provisioned platform executor — any missing lock degrades the action to hand-off
v1.65.9
2026-06-28
Fewer top-level destinations: Benchmarking, Checks and alerting settings consolidated
A follow-up navigation cleanup. Peer Benchmarking now lives as a tab inside Posture instead of a separate sidebar entry; the built-in check Catalog and your Custom checks are now two tabs of one Checks workspace rather than a top-level page and a buried settings page; and the three alerting settings — Notification channels, Webhooks and PSA escalation — now share one tab strip so "where do signals go?" is answered in a single place. No routes changed, so existing links and bookmarks keep working.
Design
- →Benchmarking in Posture: peer benchmarking is now a tab within the Posture view, trimming the top-level sidebar to Dashboard, Clients, Posture and Checks
- →One Checks workspace: the check Catalog and Custom checks share a tab strip; the custom-checks tab appears only for admins who can edit them
- →Unified alerting settings: Notification channels, Webhooks and PSA escalation now read as one workspace via a shared tab strip
v1.65.8
2026-06-28
Unified posture navigation, portfolio drift, and closing the remediation loop
A focused release on usability and on connecting compliance signals end-to-end. The cross-portfolio views — Compliance, Findings, Coverage and Frameworks — now live under one Posture entry with a tab strip instead of four separate sidebar links, and every system setting is reached through a single Settings hub rather than a long list. On top of that consolidation we added a portfolio-wide Drift timeline of every regression and resolution across your clients, a two-way PSA ticket round-trip that resolves a finding when its ticket is closed, pinned-and-verified framework versions, an attestation re-review banner that catches stale manual evidence before an audit does, and a one-click re-verify with scan on any finding.
Feature
- →Portfolio Drift timeline: a new Posture › Drift view shows every posture change — regressions and resolutions — across all your clients in one chronological feed, so a monthly review answers "what changed, where, and when" without opening each client
- →PSA ticket round-trip: closing the ServiceNow / TOPdesk / PSA ticket Beacon opened now resolves the linked finding automatically, keeping both systems in sync; secured by a shared secret and off until configured
- →Framework versions: each framework now surfaces its pinned benchmark version, and versions still being confirmed against the authoritative source are clearly marked unverified rather than shown as final
- →Attestation re-review: manual framework controls whose re-review date has passed or is approaching now surface in an alert on the Frameworks view, so stale evidence is caught before an audit relies on it
- →Re-verify with scan: any finding can trigger a fresh scan of its client to confirm a fix actually held — a not-really-resolved finding reopens as a regression
Design
- →Unified Posture navigation: Compliance, Findings, Drift, Coverage and Frameworks are now one sidebar entry with a tab strip, replacing four separate links that showed different angles on the same data; existing deep links still work
- →Single Settings hub: the long list of individual settings links is replaced by one Settings entry that opens the hub indexing every settings page
- →Risk register on the client: a client's risk register is now reachable directly from the client page's Findings group instead of only by URL
v1.65.7
2026-06-27
Cleaner cross-origin rejection on the API
The API now rejects requests from a disallowed browser origin cleanly instead of returning a server error. Previously a cross-origin pre-flight from an origin outside the allow-list produced an HTTP 500; it now returns a normal response with no cross-origin grant, so the browser blocks the request as intended. There was never any change to which origins are allowed and no data was ever exposed — this removes confusing 500s from monitoring and makes the rejection behaviour correct. Surfaced during an internal security review.
Fix
- →Correct CORS denial: a pre-flight request from a disallowed origin now returns a clean response without an
Access-Control-Allow-Origin header instead of an HTTP 500 — the allow-list itself is unchanged and fails closed as before
v1.65.6
2026-06-27
A clearer, accurate security page
The public security page now explains exactly how Beacon protects your clients across all three clouds, not just Azure. It documents the read-only connection model for each provider — an Azure App Registration or admin-consented multi-tenant app, an AWS cross-account role assumed on demand with an external ID, and a Viewer grant on Beacon’s GCP scanner service account — and makes clear that AWS, GCP, and Azure admin-consent connections store no long-lived key at all. The Azure permission list now matches what the onboarding wizard actually requests and verifies, and the page now covers single-use recovery codes and SAML single sign-on. No product behaviour changed; this is a documentation accuracy update.
Documentation
- →Multi-cloud credential model: the security page now describes the read-only connection for Azure, AWS, and GCP, and that no long-lived access key or service-account key file is stored for AWS, GCP, or Azure admin-consent connections
- →Accurate Azure permissions: the listed Microsoft Graph and Azure Resource Manager scopes now match what onboarding actually requests and probes, all read-only
- →Authentication detail: the page now documents single-use TOTP recovery codes, per-account rate limiting, and single-use SAML single sign-on
v1.65.5
2026-06-27
Security hardening
A round of defensive fixes from a full internal security review and authenticated penetration test. SLA resolution targets are now strictly per-organisation, so one tenant’s settings can never affect another’s; remediation analytics now honour team-level client permissions; role management can no longer act on a higher-ranked account or remove an organisation’s last super-admin; SAML logins are single-use to prevent assertion replay; and the two-factor login challenge is rate-limited per account. No action is required and there is no user-visible behaviour change for normal use.
Security
- →Per-organisation SLA targets: SLA resolution defaults are now scoped to each organisation, closing a cross-tenant write where one org’s admin could change every tenant’s SLA targets
- →Team-scoped remediation metrics: the remediation analytics endpoint now returns only the clients a user may access, matching the rest of the portal’s per-client permissions
- →Safer role management: a role change can no longer act on a higher-ranked account or remove an organisation’s last super-admin
- →SAML replay protection: SSO assertions are now single-use within their validity window
- →Per-account 2FA throttling: the authenticator-code login challenge is now rate-limited per account, so the attempt budget can’t be reset by re-logging in
- →Domain-scanner SSRF hardening: website probes now pin connections to the validated address, closing a DNS-rebinding window
v1.65.4
2026-06-24
Real-time status monitoring
The public status page is now backed by live monitoring instead of static figures. A background sampler records the health of each Beacon service every few minutes, so the 90-day uptime bars are computed from real data, and incidents are opened automatically when a service fails repeated health checks and resolved when it recovers. Platform operators can also publish and annotate incidents from the admin console, replacing an auto-detected outage with a human-written narrative.
Features
- →Live uptime history: the 90-day uptime bars are now computed from real service-health samples recorded continuously by the monitoring worker
- →Automatic incident detection: an incident opens automatically when a service fails repeated health checks and resolves on recovery, with no manual intervention
- →Operator incident management: platform admins can post, edit, annotate, and resolve status-page incidents from the admin console
v1.65.3
2026-06-24
Faster portfolio & a fuller evaluation experience
The client portfolio page now loads noticeably faster: its three backing queries run concurrently and are backed by new composite indexes, so the most-visited screen in the portal stays snappy as your book of clients and their finding history grows. The read-only evaluation environment is also richer — it now ships with sample teams and roles, notification channels, webhooks, scheduled reports, API tokens, a risk register, in-flight remediations, and findings spread across their full lifecycle, so every area of the product has real data to explore. We also tidied a few rough edges around remediation and billing messaging.
Performance
- →Faster client portfolio: the clients list now issues its client, open-criticals, and score-trend reads in parallel and uses new covering indexes on findings and score history, cutting load time on the portal’s busiest page
Improvements
- →Richer evaluation demo: the read-only demo now includes sample teams & roles, notification channels, webhooks, scheduled reports, API tokens, a risk register, remediations in progress, and findings across the open → acknowledged → resolved lifecycle
- →Clearer remediation status: when in-product execution isn’t yet available for a check, the “Approve & apply” action now shows a “Coming soon” state instead of disappearing, alongside the always-available hand-off path
- →Status page history: the public status page now shows 90-day uptime and recent incident history
Fixes
- →Resilient client creation: a failed activity-log write can no longer cause an otherwise-successful “add client” to report an error
v1.65.2
2026-06-23
Self-hosted licensing: connected & air-gapped modes
Self-hosted installs now choose how entitlements are enforced. Connected mode (the new default) periodically fetches a short-lived, signed license lease from Beacon over HTTPS, so plan changes and revocations take effect within a configurable grace window — while a generous grace period keeps you running through any Beacon or network outage. Air-gapped mode keeps the fully offline signed-license-file model for environments that cannot allow egress, now hardened with a baked-in verification key and a clock-rollback guard. The verification key is baked into the release image and the on-prem build fails closed, so enforcement can’t be disabled by changing environment variables. SaaS customers are unaffected.
Features
- →Connected licensing (default): short-lived signed leases fetched over HTTPS, with a configurable grace window (
LICENSE_CONNECTED_GRACE_DAYS, default 14) that tolerates Beacon/network outages and supports server-side revocation
- →Air-gapped licensing: the fully offline signed-file mode, now hardened with a baked-in verification key and a clock-rollback guard for environments that cannot phone home
- →Fail-closed on-prem image: the verification key and self-hosted mode are baked into the release build, so enforcement cannot be turned off via environment variables
v1.65.1
2026-06-23
Security hardening
A round of defensive security improvements from an internal review. Self-hosted entitlements are now enforced end-to-end against the signed license — paid features, tenant caps, and seat caps all honour the license claims rather than local state, and the background scan engine pauses when no usable license is installed. We added another layer of sanitization to the values interpolated into generated remediation scripts, tightened verification of two-way Slack/Teams acknowledge actions so they are bound to the originating client and expire, and updated a front-end dependency to pick up an upstream security fix. No action is required and there is no user-visible behaviour change for SaaS customers.
Security
- →Enforced self-hosted licensing: signed-license plan features, tenant caps, and seat caps are now enforced in the request path, and scans pause when a self-hosted install has no usable license
- →Remediation-script sanitization: additional neutralization of monitored-tenant-derived values interpolated into generated PowerShell/Bash scripts
- →Chat action verification: two-way Slack/Teams acknowledge actions are now bound to the originating client and time-limited, preventing cross-tenant replay
- →Dependency update: updated the rich-text sanitizer to incorporate an upstream security fix
v1.65.0
2026-06-23
Self-hosted — run Beacon in your own environment
Beacon can now be deployed entirely inside your own boundary — your datacenter, or your own AWS, GCP, or Azure account — instead of on the Beacon SaaS. Self-hosted runs the same compliance engine and the same portal, but you operate the runtime stack and your clients’ compliance data never leaves infrastructure you control, which makes data-residency and sovereignty requirements straightforward to satisfy. The whole stack stands up from pre-built, signed container images by registry pull or an air-gapped tarball bundle; entitlements are enforced offline by a signed license file with no phone-home; and your admins can check for and apply updates from inside the portal under System → Updates — backup, migrate, recreate, health-check, and automatic rollback on failure — with the CLI path always available too. Per-cloud deployment guides cover AWS, GCP, and Azure, for a simple single VM or a managed Postgres + Redis topology. A new Self-hosted page and a Self-hosted deployment doc cover the details.
Features
- →Self-hosted Docker deployment: run the full stack on your own host(s) from pre-built, signed images — registry pull or an air-gapped tarball bundle — with your compliance data never leaving your boundary
- →Offline signed licensing: entitlements, caps, and expiry are enforced from a signed license file with no phone-home, so it works in air-gapped networks and survives Beacon being unreachable
- →In-portal updates (System → Updates): admins see when a new version is available and apply it from the UI — backup → pull/load → migrate → recreate → health-check → auto-rollback — with live progress and an app-wide update banner
- →AWS, GCP & Azure deployment guides: per-cloud install guides for a single VM or a managed-services topology (managed Postgres + Redis), plus a documented outbound egress allowlist
v1.64.2
2026-06-22
Approvals queue: finish what “Fix all” starts
A batch “Fix all” only proposes remediations — nothing hands off or runs until an admin approves it. Until now those proposals had nowhere to be approved: the Remediation Dashboard was read-only, so a queued action just sat there. This release adds a Pending approvals queue to the top of the Remediation Dashboard that lists every proposed action across your clients, with per-row Approve & hand off and an Approve all button to clear the backlog at once. Approving dispatches the change to your own automation — Beacon still never writes to the tenant. The “Fix all” success dialog now points here.
Feature
- →Pending approvals queue: an admin-only list on the Remediation Dashboard of every action a Fix all proposed, across all your clients
- →Approve all: approve & hand off the whole backlog in one click, or clear actions one at a time — with live progress
- →Still read-only by default: approving hands the change off to your automation; in-product execution remains gated behind explicit write-scope consent and per-org opt-in
- →Honest next step: the Fix all dialog now links to the approvals queue instead of a read-only dashboard with nothing to click
v1.64.1
2026-06-22
One-click fix, moved to where you actually work
The batch “Fix all” one-click remediation used to be tucked away in a client’s Settings → Remediation tab — an odd place to go to fix something — it didn’t show you what it was about to run, and after queuing it left you with nothing but a toast. This release fixes all three. Fix All now lives in the Findings tab (under a Remediation Readiness summary) and in the compliance check detail drawer, right where you triage. Before queuing, a dialog shows a command summary plus a per-resource foldout so you can see the exact command for each affected resource. And once actions are queued, a clear next-steps panel explains that each one needs admin approval and links you straight to the Remediation Dashboard to approve and track them.
Design
- →Fix All where you triage: the Remediation Readiness summary and per-check “Fix all” action moved out of Settings into the client’s Findings tab
- →Fix from a check: the compliance check detail drawer now offers a “Fix all” action for every affected resource on that check
- →See what will run: the Fix All dialog shows a command summary and a per-resource foldout to inspect the exact command before anything is queued
- →A clear next step: after queuing, a panel explains that each action needs admin approval and links straight to the Remediation Dashboard to approve and track them — replacing the old fire-and-forget toast
v1.64.0
2026-06-22
Wave 13 — Evidence Vault, fleet scan-health, entitlements & hardening
A big release that turns your scan history into a saleable audit deliverable and gives operators the controls to run the fleet. The new Continuous Evidence Vault captures every check result as a timestamped record and assembles per-framework evidence packs you can share with an auditor or cyber-insurer through a scoped, read-only link — no login required. Behind the scenes, operators get a Fleet Scan-Health board that surfaces stale and failing scans across every tenant, and an Entitlements & feature-flag console to grant add-ons, issue comp/trial access and roll features out safely. This release also folds in correctness and security fixes from the latest full code review.
Features
- →Continuous Evidence Vault: every check result is captured as a timestamped, retained evidence record, auto-assembled into per-framework evidence packs (CIS, NIST CSF, ISO 27001, SOC 2 control families)
- →Read-only auditor links: share a scoped, expiring, revocable evidence link with a client’s auditor or insurer — no Beacon account needed
- →Fleet Scan-Health board (operators): last-successful-scan, staleness and failure-reason triage across every tenant, with at-a-glance reliability KPIs
- →Entitlements & feature-flag console (operators): grant/revoke add-ons, issue comp/trial entitlements, and roll features out to a subset of orgs behind a flag — every change audited
Security
- →Write-protected attestations: creating, updating or deleting a manual framework attestation now requires write access, so read-only roles can no longer tamper with the compliance audit trail
Fixes
- →Crash-safe billing webhooks: Stripe subscription events are now marked processed only after they succeed, inside a single transaction, so a transient error triggers a retry instead of silently losing a plan or status update
v1.63.4
2026-06-21
Security hardening across secrets, integrations & access
A focused hardening pass from an adversarial code review. Webhook signing secrets are now encrypted at rest alongside every other stored credential; state-changing requests get an added same-origin (CSRF) check on top of the existing SameSite session cookie; the domain scanner and outbound PSA/SMTP integrations now refuse to connect to internal/private addresses (SSRF protection); generated remediation scripts neutralise resource names so a hostile value in a monitored tenant can’t inject commands into a downloaded script; and global check suppressions are now strictly scoped to your own organisation so they can never affect another MSP. Invite links were also fixed — they now work reliably and always use your configured portal URL.
Security
- →Encrypted webhook secrets: webhook signing secrets are now encrypted at rest (AES-256-GCM), matching how Azure, SMTP and PSA credentials are already stored
- →CSRF defence-in-depth: cookie-authenticated state-changing requests now require a matching same-origin header in addition to the SameSite session cookie
- →SSRF protection on outbound calls: the domain scanner, Autotask and SMTP delivery now resolve-and-validate targets and refuse internal/link-local/private addresses
- →Injection-safe remediation scripts: resource names from monitored tenants are sanitised before being embedded in generated PowerShell/Bash fix scripts
- →Per-org global suppressions: a global check suppression now applies only within your own organisation and can never affect another MSP’s clients
- →Tighter rate limits & throttling: report/export generation and second-factor and login attempts are now rate-limited across all instances
Fixes
- →Working invite links: user-invite setup links now resolve correctly and always use your configured portal URL instead of the incoming request host
v1.63.3
2026-06-21
Fix: blank screen for platform operators in the compliance portal
This was the real cause behind the “blank screen after the demo” reports. When a Beacon platform-operator account (used for the Admin Portal) was also signed in on the compliance portal — for example via the shared sign-in across the admin and compliance subdomains — the portal bounced that session endlessly between the home and dashboard routes, which React aborts with a “maximum update depth” error and a blank page. The compliance portal now detects a platform-operator session and shows a single, stable screen with a link to the Admin Portal and a sign-out button, instead of looping. Normal MSP logins and audited support sessions are unaffected.
Fixes
- →No more redirect loop: a platform-operator session in the compliance portal no longer ping-pongs between routes until the page crashes blank
- →Clear way out: platform operators now see a stable screen with an “Open Admin Portal” link and a sign-out button to switch accounts
v1.63.2
2026-06-21
Fix: dashboard no longer crashes on an unreadable timestamp
A follow-up to the demo-to-real-account fix. The dashboard’s recent-activity feed formatted timestamps without guarding against a missing or malformed date, which could throw and blank the page. Dates that can’t be read now fall back gracefully instead of crashing the view, and when an unexpected error does occur the recovery screen now shows the underlying technical details so it can be diagnosed at a glance.
Fixes
- →Crash-proof timestamps: invalid or missing dates in the dashboard activity feed now render as “Never” instead of throwing and blanking the page
- →Diagnosable error screen: the “Something went wrong” recovery page now includes collapsible technical details about what failed
v1.63.1
2026-06-21
Fix: blank screen after switching from the demo to a real account
After exploring the read-only demo, signing into a real compliance-portal account could land you on an empty white screen. The demo session’s cached data was carried over into the account you were signing into, pushing the portal into a broken render — and with no safety net around it, that failure blanked the whole page instead of showing anything you could act on. Signing in now starts from a clean slate: all of the previous session’s data is cleared before the new account loads, the portal recovers gracefully from any unexpected render error with a one-click reload, and logging out fully removes the demo session cookie.
Fixes
- →Clean session on sign-in: logging in (including via MFA) or registering now clears all cached data from the previous session, so demo data can no longer leak into a real account and blank the screen
- →Graceful error recovery: an unexpected render error now shows a readable message with a “Reload Beacon” button instead of a blank white page
- →Demo cookie fully cleared on logout: signing out now removes the shared-subdomain session cookie so a stale demo session can’t linger in the browser
v1.63.0
2026-06-21
One-Click Fix Rollback
Wave 12 deepens remediation safety without adding any new checks — the Azure check count stays at 133. Admins can now revert an applied one-click remediation: because Beacon captures the resource's pre-fix state when a fix runs, a single “Revert this fix” action restores the previous configuration. Revert is admin-only and available only for fixes that ran in-product. Every revert is fully audited — a remediation.reverted event records the actor and the exact fields restored — and shows up in the Remediation Activity view as a distinct “Reverted” outcome.
Fix Rollback
- →Revert an applied one-click fix to restore the resource's previous configuration from the captured pre-fix state.
Full Audit Trail
- →Every revert is recorded with the actor and the exact fields restored, via a dedicated
remediation.reverted audit event.
Remediation Activity
- →Reverts appear as a distinct “Reverted” outcome alongside applied, failed, and skipped.
v1.62.0
2026-06-21
CIS Azure Benchmark & Deeper Framework Mappings
Wave 11 deepens framework coverage without adding any new checks — the Azure check count stays at 133. Beacon's Azure checks are now mapped to the CIS Microsoft Azure Foundations Benchmark with L1/L2 profiles, and ISO 27001:2022 and SOC 2 coverage was deepened so that every Azure check now aligns with at least one framework control. Each check's detail page now shows the CIS Azure / NIST CSF / ISO 27001 / SOC 2 controls it aligns with, and the Frameworks UI surfaces CIS Azure first-class with its control families and profiles. These are mappings that indicate alignment, not certification.
CIS Azure Benchmark
new framework
- →Azure checks are now mapped to the CIS Microsoft Azure Foundations Benchmark, surfaced first-class with control families and L1/L2 profile labels.
Deeper ISO 27001 & SOC 2
- →Every Azure check now aligns with at least one ISO 27001:2022 Annex A control and one SOC 2 Trust Services Criterion.
Per-Check Alignment
- →Each check's detail page now shows the CIS Azure / NIST CSF / ISO 27001 / SOC 2 framework controls it aligns with.
v1.61.0
2026-06-21
Remediation Depth — Preview Diffs, More One-Click Fixes & Coverage Scoring
Wave 10 deepens remediation without adding new checks. More previously handoff-only checks are now one-click fixable, the remediation panel shows an exact before→after diff of the change before you apply it plus a post-fix verification readout confirming Beacon re-checked the resource, and a new per-domain Coverage Scorecard surfaces each domain's pass/fail counts, a risk-weighted score, and how many failures are one-click fixable.
More One-Click Fixes
- →Additional Service Bus, Event Grid, Container Registry, SQL Managed Instance, and Event Hubs hardening checks are now one-click fixable.
Fix Preview & Verification
- →The remediation panel shows an exact before→after diff before applying a fix, and a verification readout after confirming Beacon re-checked the resource.
Coverage Scorecard
new page
- →New per-domain scorecard with pass/fail counts, a risk-weighted score (failures weighted by severity), and one-click-fixable counts, with a trend delta where available.
v1.60.1
June 2026
Complete Audit & Remediate CLI Snippets for Azure Playbooks
Every Azure remediation playbook now ships with both an audit (detection) and a remediate CLI snippet, so engineers can confirm a misconfiguration and fix it without leaving the finding. Added audit snippets to five database/messaging playbooks, added remediate snippets (including recreate/migrate procedures where an in-place change isn't possible) to 33 playbooks across Microsoft 365, Azure AI, and Azure platform services, and authored a new playbook for the DDoS Protection Standard check (AZ-042). This brings the Azure playbook-coverage quality gate fully green.
Remediation
- →Added audit snippets to AZ-060, AZ-063, AZ-064, AZ-065, AZ-067.
- →Added remediate snippets to 33 Microsoft 365, Azure AI, and Azure platform-service playbooks.
- →New remediation playbook for AZ-042 (DDoS Protection Standard on virtual networks).
v1.60.0
2026-06-21
Messaging, Container Apps & Storage Hardening
Wave 9 extends coverage to Event Hubs, Container Apps, Key Vault, Storage, and Azure Bastion with 10 new checks, adds one-click TLS and replication hardening fixes, and lets you export the full Check Catalog to CSV for reporting and engagement scoping.
New Checks
10 new — total now 133
- →Event Hubs: TLS below 1.2 (AZ-100), local SAS auth not disabled (AZ-101), public access without private endpoints (AZ-102)
- →Container Apps: external ingress allows insecure HTTP (AZ-103) and environment app-logs not configured (AZ-104)
- →Key Vault: purge protection not enabled (AZ-105) and RBAC authorization not enabled / legacy access policies (AZ-106)
- →Storage: cross-tenant replication not disabled (AZ-107) and minimum TLS below 1.2 (AZ-108)
- →Azure Bastion using the Basic SKU (AZ-109)
One-Click Fixes
3 new
- →Enforce TLS 1.2 on Event Hubs (AZ-100)
- →Disable storage cross-tenant replication (AZ-107)
- →Enforce storage minimum TLS 1.2 (AZ-108)
Check Catalog Export
new feature
- →Export the filtered check catalog to CSV for reporting and engagement scoping
v1.53.0
2026-06-21
Platform Service Hardening & Remediation Activity
Wave 8 extends coverage to API Management, Cognitive/AI Services, Storage hardening, Azure Firewall, App Configuration, and Azure Cache for Redis with 10 new checks, adds one-click fixes for the most common public-exposure misconfigurations, and introduces a Remediation Activity view that shows the history of one-click fixes (applied, skipped, or failed) at a glance.
New Checks
10 new — total now 123
- →API Management: legacy TLS 1.0/1.1 enabled (AZ-090) and public access without VNet (AZ-091)
- →Cognitive/AI Services: public network access (AZ-092) and key-based auth not disabled (AZ-093)
- →Storage: infrastructure (double) encryption not enabled (AZ-094) and shared key access not disabled (AZ-095)
- →Azure Firewall threat intelligence not in Deny mode (AZ-096)
- →App Configuration: public network access (AZ-097) and access-key auth not disabled (AZ-098)
- →Azure Cache for Redis non-SSL port enabled (AZ-099)
One-Click Fixes
3 new
- →Disable Cognitive Services public network access (AZ-092)
- →Disable App Configuration public network access (AZ-097)
- →Disable the non-SSL port on Azure Cache for Redis (AZ-099)
Remediation Activity
new feature
- →New view on the Remediation Dashboard showing the history of one-click fix actions
- →Each entry shows the check, target resource, and an outcome badge — applied, skipped, or failed
- →Filter by outcome, check, or client to audit what has been auto-remediated across your estate
v1.52.1
June 2026
Completed Remediation Guidance for Azure Database & Messaging Checks
Filled in missing remediation guidance for five Azure checks so every check now ships with complete, actionable guidance. AZ-061 (MySQL SSL enforcement) gained a risk reference; AZ-062 (PostgreSQL public access), AZ-066 (Cosmos DB CMK), AZ-068 (Service Bus network restriction), and AZ-069 (Event Grid network restriction) gained audit/remediate CLI snippets, and AZ-068/AZ-069 also gained a risk reference. This restores the guidance-coverage quality gate to green.
Fixes
- →Added audit + remediate CLI snippets and missing risk references to AZ-061, AZ-062, AZ-066, AZ-068, and AZ-069.
v1.52.0
2026-06-20
AWS Scan Coverage — Wave 3
The third wave of AWS expansion adds 16 new built-in checks, taking AWS from 59 to 75 — bringing Security Hub, Elastic Load Balancing, Lambda, EFS, Secrets Manager, DynamoDB, SNS, SQS, ECR, and ACM into scope for the first time. New checks confirm Security Hub is enabled with no active critical/high findings, flag load balancers with plaintext HTTP listeners or weak TLS policies and ALBs without access logging, surface publicly-invokable Lambda functions and functions on deprecated runtimes, and check encryption at rest for EFS, Secrets Manager, and DynamoDB. They also flag secrets without rotation, DynamoDB tables without point-in-time recovery, public SNS topics and public/unencrypted SQS queues, ECR repositories lacking scan-on-push or immutable tags, and ACM certificates that are expired or expiring within 30 days. Every new check ships with full remediation guidance, audit/remediate AWS CLI snippets, and framework mappings (CIS, NIST, SOC 2).
AWS Scans
16 new — total now 75
- →AWS-SH-001 Security Hub: flags accounts where Security Hub is disabled or has active critical/high findings.
- →AWS-ELB-001 HTTP listeners: flags load balancers exposing plaintext HTTP listeners.
- →AWS-ELB-002 TLS policy: flags HTTPS/TLS listeners using a weak SSL security policy.
- →AWS-ELB-003 ALB access logs: flags Application Load Balancers without S3 access logging.
- →AWS-LAMBDA-001 Public functions: flags Lambda functions with a public resource policy.
- →AWS-LAMBDA-002 Deprecated runtimes: flags Lambda functions on end-of-life runtimes.
- →AWS-EFS-001 EFS encryption: flags EFS file systems not encrypted at rest.
- →AWS-SM-001 Secret rotation: flags Secrets Manager secrets without automatic rotation.
- →AWS-SM-002 Secret CMEK: flags secrets using the default key instead of a customer-managed KMS key.
- →AWS-DDB-001 DynamoDB PITR: flags DynamoDB tables without point-in-time recovery.
- →AWS-DDB-002 DynamoDB CMEK: flags tables not encrypted with a customer-managed KMS key.
- →AWS-SNS-001 Public topics: flags SNS topics with a public access policy.
- →AWS-SQS-001 Queue exposure: flags SQS queues that are public or unencrypted at rest.
- →AWS-ECR-001 Scan on push: flags ECR repositories without scan-on-push enabled.
- →AWS-ECR-002 Immutable tags: flags ECR repositories with mutable image tags.
- →AWS-ACM-001 Cert expiry: flags ACM certificates that are expired or expiring within 30 days.
v1.51.0
2026-06-20
GCP Scan Coverage — Wave 3
The third wave of GCP expansion adds 12 new built-in checks, taking GCP from 63 to 75 — bringing Artifact Registry into scope for the first time and deepening coverage of encryption, ingress isolation, and Kubernetes posture. New checks flag public Artifact Registry repositories and those lacking customer-managed keys (CMEK), datasets / topics / repositories missing default CMEK, Cloud Storage buckets with no lifecycle or retention policy, Cloud Run services and Cloud Functions that allow unrestricted ingress, GKE clusters without Binary Authorization or with logging / monitoring disabled, firewall rules permitting unrestricted egress to 0.0.0.0/0, Cloud DNS zones still signing with the weak RSASHA1 algorithm, and default service accounts holding Owner / Editor. Every new check ships with full remediation guidance, audit/remediate gcloud snippets, and framework mappings (CIS, NIST, SOC 2).
GCP Scans
12 new — total now 75
- →GCP-DNS-001 DNSSEC algorithm: flags public Cloud DNS zones signing with the weak RSASHA1 algorithm.
- →GCP-CR-001 Public Artifact Registry: flags repositories granting access to allUsers / allAuthenticatedUsers.
- →GCP-CR-002 Artifact Registry CMEK: flags repositories not using customer-managed keys.
- →GCP-GCS-006 Bucket lifecycle: flags GCS buckets with no lifecycle rule or retention policy.
- →GCP-BQ-004 Dataset default CMEK: flags BigQuery datasets with no default customer-managed key.
- →GCP-PUBSUB-002 Topic CMEK: flags Pub/Sub topics not using customer-managed keys.
- →GCP-RUN-002 Cloud Run ingress: flags Cloud Run services that allow unrestricted ingress.
- →GCP-FN-002 Cloud Functions ingress: flags functions that allow unrestricted ingress.
- →GCP-GKE-007 Binary Authorization: flags GKE clusters without Binary Authorization enforcement.
- →GCP-GKE-008 Logging & monitoring: flags GKE clusters with logging or monitoring disabled.
- →GCP-FW-001 Unrestricted egress: flags firewall rules allowing all-protocol egress to 0.0.0.0/0.
- →GCP-IAM-016 Privileged default SAs: flags default service accounts holding Owner or Editor.
v1.50.0
2026-06-20
Edge, Analytics & Observability Coverage
Wave 7 extends coverage to Azure Front Door WAF, VPN gateways, Synapse Analytics, Application Insights, and Log Analytics with 10 new checks, adds one-click fixes for the most common observability misconfigurations, and ships a new Check Catalog page that makes the entire built-in coverage surface searchable in one place.
New Checks
10 new — total now 113
- →Azure Front Door: frontend endpoint without WAF policy (AZ-080) and WAF policy in Detection mode (AZ-081)
- →VPN Gateway Basic SKU (AZ-082) and Public IP Basic SKU (AZ-083)
- →Azure Synapse: no managed virtual network (AZ-084), public network access (AZ-085), Azure-AD-only auth not enforced (AZ-086)
- →Observability: classic Application Insights (AZ-087), Log Analytics retention below 90 days (AZ-088) and public network access (AZ-089)
One-Click Fixes
3 new
- →Disable Synapse workspace public network access (AZ-085)
- →Raise Log Analytics workspace retention to 90 days (AZ-088)
- →Disable Log Analytics workspace public network access (AZ-089)
Check Catalog
new feature
- →New searchable, filterable page listing every built-in compliance check across all connected clouds
- →Filter by provider, domain, and severity, or show only checks with a one-click auto-fix
- →See the full coverage surface at a glance — ideal for scoping engagements and client reporting
v1.49.0
June 2026
AWS & GCP Scan Coverage — Wave 2
The second wave of multi-cloud expansion adds 22 new built-in checks — taking AWS from 50 to 59 and GCP from 50 to 63. On AWS it surfaces active IAM Access Analyzer findings, flags security groups exposing sensitive service ports (Elasticsearch, Redis, MongoDB, Memcached, Kibana), and adds AMI snapshot encryption, default-VPC removal, RDS auto minor-upgrade, S3 MFA Delete, CloudTrail S3 data-event logging, AWS Config global-resource recording, and GuardDuty S3 protection. On GCP it deepens Kubernetes (GKE) hardening (network policy, master authorized networks, shielded nodes) and brings serverless and messaging services into scope for the first time — Cloud Run, Cloud Functions, Pub/Sub, and Secret Manager — alongside new checks for weak TLS on SSL policies, Cloud SQL logging flags, public BigQuery datasets, persistent-disk CMEK encryption, Essential Contacts, and full audit-logging configuration. Every new check ships with full remediation guidance, audit/remediate CLI snippets, and framework mappings (CIS, NIST, SOC 2).
AWS Scans
9 new — total now 59
- →AWS-IAM-017 Access Analyzer findings: flags active external-access findings from IAM Access Analyzer.
- →AWS-NET-007 Sensitive port exposure: flags security groups exposing Elasticsearch/Redis/MongoDB/Memcached/Kibana ports to the internet.
- →AWS-EC2-005 AMI encryption: flags self-owned AMIs backed by unencrypted snapshots.
- →AWS-EC2-006 Default VPC: flags accounts where a default VPC still exists.
- →AWS-RDS-006 Auto minor upgrade: flags RDS instances without auto minor version upgrade.
- →AWS-S3-008 MFA Delete: flags versioned buckets without MFA Delete.
- →AWS-LOG-006 S3 data events: flags accounts where CloudTrail does not log S3 object data events.
- →AWS-CFG-002 Config global resources: flags AWS Config recorders not capturing global resource types.
- →AWS-GD-002 GuardDuty S3 protection: flags detectors with S3 protection disabled.
GCP Scans
13 new — total now 63
- →GCP-GKE-004 Network policy: flags GKE clusters without network policy enforcement.
- →GCP-GKE-005 Master authorized networks: flags clusters whose control plane is not restricted to trusted CIDRs.
- →GCP-GKE-006 Shielded nodes: flags clusters not launching shielded nodes.
- →GCP-NET-009 Weak TLS: flags SSL policies allowing legacy TLS or the COMPATIBLE profile.
- →GCP-SQL-007 Logging flags: flags PostgreSQL Cloud SQL instances missing logging flags.
- →GCP-BQ-003 Public datasets: flags BigQuery datasets shared with allUsers / allAuthenticatedUsers.
- →GCP-DISK-001 Disk CMEK: flags persistent disks not using customer-managed keys.
- →GCP-IAM-014 Essential Contacts: flags projects with no Essential Contacts configured.
- →GCP-IAM-015 Audit logging: flags projects without full audit logging for all services.
- →GCP-RUN-001 Public Cloud Run: flags Cloud Run services invokable by allUsers.
- →GCP-FN-001 Public Cloud Functions: flags functions invokable by allUsers.
- →GCP-PUBSUB-001 Public topics: flags Pub/Sub topics granting access to public principals.
- →GCP-SECRET-001 Secret CMEK: flags Secret Manager secrets not using customer-managed keys.
v1.48.0
2026-06-20
Container & Edge Security with Finding Correlation
Wave 6 extends coverage to container registries, Logic Apps, Data Factory, and Application Gateway WAF with 10 new checks, adds one-click fixes for the most common container-registry misconfigurations, and introduces a Finding Correlation view that clusters the same issue across many clients and resources so MSPs can tackle systemic risk in one place.
New Checks
10 new — total now 103
- →Container Registry: admin user enabled (AZ-070), public network access (AZ-071), anonymous pull (AZ-072), quarantine policy (AZ-073)
- →Logic Apps (Standard): public network access (AZ-074) and no managed identity (AZ-075)
- →Data Factory: public network access (AZ-076) and no Git integration (AZ-077)
- →Application Gateway: WAF not enabled (AZ-078) and WAF in Detection mode rather than Prevention (AZ-079)
One-Click Fixes
3 new
- →Disable Container Registry admin user (AZ-070)
- →Disable Container Registry anonymous pull (AZ-072)
- →Disable Data Factory public network access (AZ-076)
Finding Correlation
new feature
- →New view on the cross-client findings page that clusters findings by check type across clients and resources
- →Spot systemic issues at a glance — the same misconfiguration across many tenants surfaces as a single actionable row
- →Each cluster shows how many clients and resources are affected so MSPs can act on the whole group at once
v1.47.0
June 2026
Expanded AWS & GCP Scan Coverage
Twenty new security checks broaden multi-cloud coverage, taking both AWS and GCP from 40 to 50 built-in checks each as the first wave of an expansion toward ~75 per platform. The new AWS checks harden IAM password policy (reuse prevention, maximum age, no inline user policies), close common data-exposure paths (no security group open on all ports, EBS snapshot encryption, no publicly shared RDS snapshots, no public KMS key policy, S3 Object Ownership enforced), and improve operability (RDS Multi-AZ, CloudWatch log-group retention). The new GCP checks add Kubernetes (GKE) posture for the first time — legacy ABAC disabled, private nodes, and Workload Identity — plus project-level public IAM detection, all-port and unlogged firewall rule checks, least-privilege Compute service-account and API-scope checks, GCS public access prevention, and Cloud SQL point-in-time recovery. Every new check ships with full remediation guidance, audit/remediate CLI snippets, and framework mappings (CIS, NIST, SOC 2).
AWS Scans
10 new — total now 50
- →AWS-IAM-014 Password reuse: verifies the account password policy blocks reuse of at least the last 24 passwords.
- →AWS-IAM-015 Password max age: verifies passwords must be rotated at least every 90 days.
- →AWS-IAM-016 No inline user policies: flags IAM users with inline policies that should be managed via groups.
- →AWS-NET-006 All-ports security groups: flags security groups open on all ports to 0.0.0.0/0.
- →AWS-EC2-004 EBS snapshot encryption: flags unencrypted account-owned EBS snapshots.
- →AWS-RDS-005 RDS Multi-AZ: checks production RDS instances run Multi-AZ for resilience.
- →AWS-RDS-007 Public RDS snapshots: flags manual RDS snapshots shared with all AWS accounts.
- →AWS-KMS-002 Public KMS keys: flags KMS key policies that grant access to a wildcard principal.
- →AWS-S3-007 Object Ownership: verifies buckets disable ACLs via BucketOwnerEnforced.
- →AWS-MON-002 Log group retention: flags CloudWatch Log Groups with no retention period set.
GCP Scans
10 new — total now 50
- →GCP-IAM-013 Public IAM members: flags project IAM bindings granting allUsers or allAuthenticatedUsers.
- →GCP-NET-007 All-ports firewall: flags firewall rules allowing all ports from 0.0.0.0/0.
- →GCP-NET-008 Firewall logging: flags VPC firewall rules with logging disabled.
- →GCP-VM-009 Default service account: flags instances running as the default Compute service account.
- →GCP-VM-010 Full API scope: flags instances granting the cloud-platform access scope.
- →GCP-GCS-005 Public access prevention: verifies buckets enforce public access prevention.
- →GCP-SQL-006 Point-in-time recovery: checks Cloud SQL instances have PITR / binary logging enabled.
- →GCP-GKE-001 Legacy ABAC: flags GKE clusters still using deprecated legacy ABAC.
- →GCP-GKE-002 Private nodes: flags GKE clusters whose nodes have public IPs.
- →GCP-GKE-003 Workload Identity: flags GKE clusters without Workload Identity enabled.
v1.46.0
2026-06-20
Database Hardening & Batch Remediation
Wave 5 expands coverage to Azure database and integration services (PostgreSQL, MySQL, SQL Managed Instance, Cosmos DB, Service Bus, Event Grid) with 10 new checks, promotes key data-protection checks to one-click auto-fix, and adds batch remediation to streamline fixing the same issue across many resources at once.
New Checks
10 new — total now 93
- →PostgreSQL SSL enforcement (AZ-060) and public network access (AZ-062)
- →MySQL SSL enforcement (AZ-061)
- →SQL Managed Instance TLS (AZ-063) and public endpoint (AZ-064)
- →Cosmos DB firewall (AZ-065) and customer-managed key encryption (AZ-066)
- →Service Bus TLS (AZ-067) and public access (AZ-068)
- →Event Grid public access (AZ-069)
Executor Promotions
4 checks now auto-fixable
- →Storage blob public access — now supports one-click in-product fix
- →Key Vault network restriction — now supports one-click in-product fix
- →Storage network access — now supports one-click in-product fix
- →SQL Transparent Data Encryption — now supports one-click in-product fix
Batch Remediation
new feature
- →“Fix All” batch action groups findings by check type in the Remediation tab
- →Apply a one-click fix to all affected resources for a given check at once — no need to remediate each resource individually
- →Requires Remediation Edit Mode and admin approval; each batch action is recorded in the audit log
Remediation Readiness
new feature
- →New summary card on each client’s Remediation tab shows how many findings are auto-fixable vs. handoff-only at a glance
- →Instantly see what proportion of the remediation backlog can be resolved in-product without manual scripting
v1.45.0
June 2026
Compute Security, Real-time Alerting & Dashboard Intelligence
Wave 4 expands Beacon's scan coverage to AKS and Azure Functions, adds real-time Slack and Teams notifications for new critical findings, and surfaces at-risk clients directly on the main dashboard.
Security Scans
12 new — total now 83
- →AKS: RBAC enforcement, private API server, Azure AD integration, deprecated Kubernetes version (AZ-048–051)
- →Function Apps: managed identity, HTTPS-only enforcement, TLS 1.2 minimum (AZ-052–054)
- →Activity log alerting: gaps for policy assignment changes and security solution deletion (AZ-055–056)
- →Subscription diagnostic settings not configured (AZ-057)
- →Azure Backup: no Recovery Services vault, soft delete disabled (AZ-058–059)
One-Click Fixes
6 new
- →Enable RBAC on AKS clusters (AZ-048)
- →Enable managed identity, HTTPS-only, and TLS 1.2 on Function Apps (AZ-052–054)
- →Enable soft delete on Recovery Services vaults (AZ-059)
- →Guided diagnostic settings setup for Activity Log archival (AZ-057)
Alerting
new feature
- →Slack and Microsoft Teams webhook alerting — get notified instantly when new Critical or High findings appear
- →Rich finding-list messages: each alert names the top 5 Critical/High findings by check ID and title — no triage pivot required
- →Configure channels in Settings → Notification Channels; no relay server needed
Dashboard
- →New “Clients at Risk” widget highlights the top 5 clients with the most unresolved critical findings
- →Compliance score badges in the client list for at-a-glance health status
v1.44.0
June 2026
Network Hardening, QBR Reports & Client Portal Download
Eleven new security checks extend coverage into Azure network security and Microsoft Defender for Cloud plan activation, bringing the built-in check catalogue to 71. NSG exposure checks flag RDP and SSH rules open to the internet; private endpoint enforcement now covers Storage, SQL Server, and Key Vault; DDoS Protection Standard and Network Watcher deployment are checked per subscription; and four Defender for Cloud plan activation checks ensure Servers, Containers, Storage, and Key Vault are protected. Ten new one-click fixes let MSP engineers auto-restrict permissive NSG rules, disable public network access on key services, and enable Network Watcher and Defender plans directly from the findings view. Quarterly Business Review reports are now schedulable from the Scheduled Reports settings page, producing a branded executive HTML document with compliance score trend, top findings, remediation progress, and MSP recommendations — available on Professional and Enterprise plans. Clients can now download their compliance report directly from the branded portal without requiring MSP admin involvement.
Security Scans
11 new — total now 71
- →AZ-037 NSG RDP exposure: flags inbound NSG rules that permit RDP (port 3389) from any internet source.
- →AZ-038 NSG SSH exposure: flags inbound NSG rules that permit SSH (port 22) from any internet source.
- →AZ-039 Storage private endpoint: verifies that Azure Storage accounts are accessible only via private endpoint, not the public internet.
- →AZ-040 SQL Server private endpoint: verifies that SQL Server instances are accessible only via private endpoint.
- →AZ-041 Key Vault private endpoint: verifies that Key Vaults are accessible only via private endpoint.
- →AZ-042 DDoS Protection Standard: checks that DDoS Protection Standard is enabled on VNets that contain public IP addresses.
- →AZ-043 Network Watcher deployment: confirms Network Watcher is deployed in every subscription region where network resources exist.
- →AZ-044 Defender for Servers: checks that Microsoft Defender for Cloud — Servers plan is activated on the subscription.
- →AZ-045 Defender for Containers: checks that Microsoft Defender for Cloud — Containers plan is activated.
- →AZ-046 Defender for Storage: checks that Microsoft Defender for Cloud — Storage plan is activated.
- →AZ-047 Defender for Key Vault: checks that Microsoft Defender for Cloud — Key Vault plan is activated.
One-Click Fixes
10 new — network & Defender
- →Auto-restrict permissive NSG RDP rules: rewrites over-permissive inbound RDP rules to scope source to VirtualNetwork, removing internet exposure in one click.
- →Auto-restrict permissive NSG SSH rules: rewrites over-permissive inbound SSH rules to scope source to VirtualNetwork.
- →Disable public network access on Storage: disables public network access on the Storage account and enforces private endpoint access only.
- →Disable public network access on SQL Server: disables public network access on the SQL Server instance.
- →Disable public network access on Key Vault: disables public network access on the Key Vault.
- →Enable Network Watcher: deploys Network Watcher to the subscription region directly from the findings view.
- →Enable Defender for Servers: activates the Microsoft Defender for Cloud — Servers plan on the subscription.
- →Enable Defender for Containers: activates the Microsoft Defender for Cloud — Containers plan on the subscription.
- →Enable Defender for Storage: activates the Microsoft Defender for Cloud — Storage plan on the subscription.
- →Enable Defender for Key Vault: activates the Microsoft Defender for Cloud — Key Vault plan on the subscription.
QBR Reports
new premium feature
- →Schedule QBR reports: a new QBR type in the Scheduled Reports settings page generates and emails a branded Quarterly Business Review report on your chosen cadence.
- →Executive HTML document: the QBR includes compliance score trend, top open findings, remediation progress (resolved vs. newly opened), and MSP recommendations — white-labelled with your branding.
- →Plan-gated: QBR scheduling is available on Professional and Enterprise plans.
Client Portal
- →Self-serve compliance report download: clients can now download their compliance report directly from the branded client portal without requiring MSP admin involvement.
v1.43.0
20 June 2026
PaaS & AI Security Scans, Identity Fixes, and Peer Benchmarking
Twelve new security checks extend coverage into PaaS data stores and Azure AI services — Cosmos DB, Container Registry, Data Lake, Redis Cache, SQL Managed Instance, Azure OpenAI, and Azure AI services — bringing the built-in check catalogue to 60. Four new identity one-click fixes let admins restrict user consent, block default role permissions, prevent app registration by end-users, and limit guest access, all from the finding drawer. A new Peer Benchmarking dashboard shows how your managed tenants rank against anonymised peers, with a percentile score, score distribution chart, and a check gap analysis highlighting where clients trail the median.
Security Scans
- →AZ-030 Cosmos DB encryption (CMK): checks that a customer-managed key is configured for Cosmos DB at-rest encryption.
- →AZ-031 Cosmos DB public network access: verifies that public network access is disabled on the Cosmos DB account.
- →AZ-032 Container Registry private endpoint: confirms the registry is accessible only via private endpoint, not the public internet.
- →AZ-033 Container Registry image scanning: checks that Defender for Containers is enabled and scanning registry images for vulnerabilities.
- →AZ-034 Data Lake Storage secure transfer: verifies that HTTPS-only (secure transfer) is required on Azure Data Lake Storage Gen2 accounts.
- →AZ-035 Redis Cache TLS enforcement: checks that Redis Cache requires TLS 1.2 and that the non-SSL port is disabled.
- →AZ-036 SQL Managed Instance TDE: confirms Transparent Data Encryption is enabled on the SQL Managed Instance.
- →AI-001 Azure OpenAI private endpoint: verifies the Azure OpenAI resource is accessible only via private endpoint.
- →AI-002 Azure OpenAI content filtering: checks that content filtering is enabled on the Azure OpenAI deployment.
- →AI-003 Azure AI customer-managed keys: confirms Azure AI Cognitive Services resources use customer-managed keys for at-rest encryption.
- →AI-004 Azure OpenAI diagnostic logging: verifies that diagnostic logging is enabled on Azure OpenAI resources for audit and monitoring.
- →AI-005 Azure AI key rotation (Key Vault): checks that Azure AI service keys are managed via Key Vault and subject to a rotation policy.
One-Click Fixes
- →ID-018 Restrict user consent to low-risk permissions: applies a Graph API policy that limits user consent to low-risk OAuth permission grants only.
- →ID-019 Restrict default user role permissions: blocks end-users from creating apps, groups, or tenants via Entra ID default role settings.
- →ID-020 Prevent users from registering apps: disables the “Users can register applications” setting in Entra ID, requiring admin approval for all app registrations.
- →ID-024 Set guest users to restricted access: configures guest user access level to the most restricted setting, limiting guests to their own directory objects.
Platform
- →Peer Benchmarking dashboard: a new page at /benchmarking shows each tenant's percentile rank against anonymised peer data, a score distribution chart, and a check gap analysis highlighting controls where your clients trail the median.
- →Lazy-loaded client detail tabs: the Audit Log and Trends tabs are now lazy-loaded with React Suspense, significantly reducing the initial bundle size and render time when opening a client page.
v1.42.0
20 June 2026
Email Security Scans, One-Click Fixes, and Scheduled Reports
Seven new Microsoft 365 checks cover the email security controls most commonly exploited in business email compromise — anti-phishing, Safe Links, Safe Attachments, anti-malware, external auto-forwarding, mailbox auditing, and modern authentication for Exchange Online. Six Azure checks are now one-click fixable directly from the finding (Storage HTTPS & TLS, App Service HTTPS, TLS & FTP hardening, container soft-delete). A new Scheduled Reports hub lets you view, create, edit, and delete all report schedules across your client fleet from a single page. Navigation is faster thanks to TanStack Query caching that eliminates round-trips on route switches.
Security Scans
- →M365-010 Anti-phishing baseline: verifies a baseline anti-phishing policy is configured in Defender for Office 365.
- →M365-011 Safe Links: checks that a Safe Links policy is enabled for the tenant (Defender for Office 365 P1+).
- →M365-012 Safe Attachments: checks that a Safe Attachments policy is enabled (Defender for Office 365 P1+).
- →M365-013 Anti-malware baseline: verifies a baseline anti-malware policy is in place for Exchange Online.
- →M365-014 External auto-forwarding blocked (critical): detects whether the transport rule or outbound spam policy allows automatic forwarding to external addresses — the leading business email compromise vector.
- →M365-015 Mailbox auditing: confirms org-wide mailbox auditing is enabled so admin, delegate, and owner actions are logged.
- →M365-016 Modern authentication: verifies modern authentication (OAuth 2.0) is enabled for Exchange Online and legacy basic auth is disabled.
One-Click Fixes
- →AZ-002 HTTPS-only on storage accounts: enables HTTPS-only traffic in one click (Remediation Edit Mode).
- →AZ-002 Minimum TLS 1.2 on storage accounts: raises the minimum TLS version on the storage account to 1.2.
- →AZ-021 HTTPS-only on App Service: enables HTTPS-only on the App Service site.
- →AZ-021 Minimum TLS 1.2 on App Service: sets the minimum TLS cipher suite version to TLS 1.2 on the App Service.
- →AZ-021 Disable FTP on App Service: disables FTP deployment on the App Service, leaving only FTPS or SCM access.
- →AZ-004 Container soft-delete on storage accounts: enables blob container soft-delete to protect against accidental or malicious deletion.
Platform
- →Scheduled Reports hub: a new page at Settings → Scheduled Reports shows all report schedules across all clients with summary stats (active count, next delivery, formats in use), per-client grouping, and full create / edit / delete controls.
- →Query caching: TanStack Query now caches responses for 5 minutes (garbage-collected after 30 minutes), eliminating API round-trips when switching between routes.
- →Faster navigation: DNS prefetch for the API origin and a Recharts chunk preload on the Compliance page cut perceived navigation latency.
v1.41.1
20 June 2026
See at a glance which checks can be auto-fixed
Checks that Remediation Edit Mode can fix in one click now carry a small 1-click fix badge in the check list and on the check detail page, so admins can immediately spot what supports automated remediation. The fix still runs only after explicit admin approval.
Design
- →“1-click fix” badge: auto-fixable checks are flagged across the check list and detail view, sourced from the live remediation executor catalog.
v1.41.0
20 June 2026
Production hardening: real one-click fixes, smarter alerts, sturdier reports, and a clearer setup
A hardening release that takes the v1.40 features from "works" to "production-ready." Remediation Edit Mode can now actually execute a curated set of safe fixes (still opt-in, still behind admin approval); chat & drift alerts gained noise controls; the weekly digest and QBR reports are now restart-safe; the Azure connection wizard shows per-permission pass/fail; and the settings area was reorganised around a single hub.
Features
- →Real one-click fixes (opt-in): Remediation Edit Mode can now execute a curated set of low-risk fixes — enable storage soft-delete, turn on a Defender plan, enable Key Vault purge protection — each idempotent, verified by a re-scan, and fully audited. Everything else still hands off. An org-wide default switch lets you enable edit mode across all clients at once, and you can approve & run without leaving the finding.
- →Per-permission connection check: the Azure wizard now shows exactly which Graph/ARM permissions verified and which are missing, instead of a single generic error.
- →Alert noise controls: set a minimum severity per Slack/Teams/email channel so trivial regressions don't page you; operational alerts always get through.
- →Bulk reopen: reopening findings in bulk is now a real action (with a working undo), not just a client-side stash.
- →Slack & Teams setup: a ready-to-use Slack app manifest and a Teams Outgoing-Webhook guide for installing two-way Acknowledge actions.
Reliability
- →Restart-safe weekly digest: the portfolio owner digest now persists its send state, so a worker restart can't double-send or skip a week.
- →Reliable QBR PDFs: when PDF rendering isn't available the report cleanly falls back to branded HTML with a clear notice, instead of a silent stub.
- →Honest benchmarking: portfolio percentiles now show a "not enough data yet" state until you have at least five clients.
- →Better drift coverage & ROI: domain scans now record "what changed" too, and the best-ROI fix list uses per-check effort estimates from the remediation playbooks.
- →More dependable Conditional Access baselines: baseline templates now match controls by their stable identifier, so they no longer mis-report when a tenant's control titles differ.
Design
- →Settings hub as the front door: the grouped Settings hub is now the main Settings page, with SAML SSO moved to its own sub-page.
v1.40.1
20 June 2026
Updated plan pricing
As Beacon's coverage has grown — multicloud scanning, optional one-click remediation, drift alerting, QBR reports and more — we've refreshed our plan pricing to match. Solo stays at $19/mo; the paid tiers move to Starter $59, Growth $129 and Pro $249 per month, with two months free on annual billing. Every plan still includes every check and continuous 6-hour scans, and a manual quarterly audit across the same tenants still costs far more in engineer time.
Pricing
- →Solo: unchanged at $19/mo (1 tenant).
- →Starter: $59/mo, up to 10 tenants.
- →Growth: $129/mo, up to 30 tenants.
- →Pro: $249/mo, up to 75 tenants.
- →Annual billing: still two months free on every paid plan.
v1.40.0
20 June 2026
A major release: optional one-click remediation, drift alerting, QBR reports, Secure Score, benchmarking and a smoother first run
The biggest Beacon update yet. You can now opt a client into Remediation Edit Mode to see — and, when you're ready, run — the exact PowerShell that fixes a finding, always behind an explicit admin approval. Every scan now records what changed since the last one and alerts you on regressions, and you can acknowledge or assign findings straight from Slack and Teams. There's a new branded Quarterly Business Review report to hand your clients, portfolio benchmarking and a best-ROI fix list, a first-class Microsoft Secure Score view, reusable Conditional Access baseline templates, and a much friendlier first run — a guided setup checklist and a copy-paste Azure onboarding script. Pricing is now public, and there's a public checks catalog.
Features
- →Optional Remediation Edit Mode: opt-in per client (off by default). Every failing finding shows the exact PowerShell & Azure CLI to fix it with one-click copy; a Run fix action is available only in edit mode and only after an admin approves the previewed change, and safely falls back to hand-off when in-product execution isn't available.
- →Drift & “what changed” alerting: each scan records newly opened, resolved and regressed findings on a new What changed tab, and fires a notification/webhook when posture regresses.
- →Two-way Slack & Teams: acknowledge or assign a finding directly from the alert message, with signed inbound requests.
- →Quarterly Business Review reports: a branded, client-ready QBR (score trend, framework posture, top findings, remediation progress) you can schedule or download as PDF/HTML/CSV.
- →Portfolio benchmarking & best-ROI fixes: see how each client compares against your own portfolio per category, plus a ranked “biggest score gain per hour” remediation list and a weekly portfolio digest for owners.
- →Microsoft Secure Score, first-class: a dedicated client tab showing controls, current vs. maximum points and the top improvement actions.
- →Conditional Access baseline templates: define a policy baseline once and apply it across many clients to standardise your managed fleet.
- →Guided first run: a dashboard 0→1 checklist (connect a client, run a scan, invite your team, set up alerts) plus a copy-paste Azure CLI/PowerShell onboarding script and clearer, permission-specific validation in the connection wizard.
Design
- →Portfolio health header: average score, clients in a critical state, SLA breaches and overdue scans are always visible at the top of the app.
- →Settings hub & teaching empty states: one place that groups every setting, and empty Frameworks/Risk Register/Baselines/Findings screens now explain what they're for and how to start.
- →“Why is my score X?” explainer: a breakdown showing how each failing control moves the severity-weighted score, plus colour-blind-safe severity icons and a more prominent bulk-action bar.
- →Public pricing & checks catalog: pricing is now on the website with a tier comparison and FAQ, alongside a new browsable catalog of every check mapped to CIS, NIST CSF and ISO 27001.
v1.39.3
19 June 2026
Fix: the client switcher rail now stays attached to the sidebar
On a client's detail page, the collapsible Clients switcher rail (with its search box and client list) is anchored flush against the main navigation sidebar. Previously, on wide desktop screens the page content was centred within a fixed maximum width, which left the rail floating in the middle of the screen, visibly detached from the nav. The client-detail page now renders edge-to-edge so the rail sits where you'd expect it.
Fixes
- →Client rail attached to the sidebar: the client switcher on the client-detail page no longer floats mid-screen on wide displays — it's flush against the main navigation.
v1.39.2
19 June 2026
Fix: dashboard open-issue total now matches your clients
The dashboard's Open Issues total was still counting failing/warning compliance checks, so it disagreed with the per-client counts (which now report active findings). It now counts the same open, acknowledged and in-progress findings across all your clients, so the headline number reconciles with what each client shows.
Fixes
- →Dashboard open issues reconcile: the dashboard total now sums active findings (open / acknowledged / in-progress) across clients, matching each client's own Open Issues count.
v1.39.1
19 June 2026
Fixes: accurate open-issue counts, provider-relevant frameworks, and a working cross-client list
Three fixes to how findings and frameworks are surfaced. A client's Open Issues count now reflects the same open, acknowledged and in-progress findings you see on the Findings tab, instead of a separate failing-check tally that could disagree. The per-client Frameworks tab now only shows frameworks relevant to that client's cloud — an Azure tenant no longer lists CIS AWS or CIS GCP coverage. And the Cross-Client Findings list now populates correctly.
Fixes
- →Open Issues matches Findings: the client header now counts open, acknowledged and in-progress findings — the same items listed on the Findings tab — rather than failing/warning checks.
- →Provider-relevant frameworks: a client's Frameworks tab is scoped to its cloud provider, so Azure tenants no longer show AWS/GCP frameworks (and vice versa).
- →Cross-Client Findings list populates: the findings table now loads correctly, including in-progress findings in the default view.
v1.39.0
19 June 2026
Domain scanner: check your clients' public domains against internet standards
Beacon now scans the public domains you manage for each client — an internet.nl-style website scan that runs alongside the cloud compliance scan. Open a client and switch to the new Domains tab (its tenant domain is added automatically, unless it's a Microsoft-managed onmicrosoft.com domain), then add your real public domains. Each scan grades the domain across eight categories and gives it a 0–100 hygiene score; any failing required test becomes a tracked finding that picks up SLA timers, PSA tickets and webhooks exactly like a cloud finding. Domains re-scan daily by default, and Scan now runs an on-demand check at any time.
Features
- →Eight standards checks: IPv6, DNSSEC, HTTPS & HSTS, TLS, certificate, DANE, security headers, and RPKI — using only direct DNS, TLS and HTTP probes.
- →Per-domain hygiene score: a weighted 0–100 score with a category-by-category breakdown and the exact tests that failed.
- →Findings integration: domain issues flow through the same SLA, PSA-ticketing and webhook pipeline as cloud findings, without affecting the cloud compliance score.
- →Automatic & on-demand: domains re-scan daily in the background, with a one-click Scan now for immediate results.
- →Per-client & focused: lives on each client's Domains tab, and skips Microsoft-managed
onmicrosoft.com domains that would only report on Microsoft's own infrastructure.
v1.38.0
18 June 2026
Notification channels: scope any integration to one client or your whole MSP
Every notification channel — Slack, Teams, email, PSA, ServiceNow, and TOPdesk — now has a scope. Leave it MSP-wide (the default) and it fires for every client in your organisation, exactly as before; or point it at a single client so only that client's alerts land there. That makes it easy to route one customer's incidents into their own ServiceNow or TOPdesk while everything else flows to your shared ops channel. When both a client-scoped channel and an MSP-wide channel of the same type exist, the client-scoped one wins for that client.
Features
- →Per-channel scope: choose “All clients (MSP-wide)” or a specific client when creating or editing any notification channel.
- →Client-specific routing: send one customer's findings, scan failures, and SLA breaches to their own destination without affecting the rest of your portfolio.
- →Sensible precedence: a client-scoped channel takes priority over an MSP-wide channel of the same type for that client.
v1.37.0
18 June 2026
TOPdesk: open an incident automatically the moment a finding appears
Hot on the heels of the ServiceNow integration, Beacon now wires straight into TOPdesk too. Add a TOPdesk notification channel under Settings → Notification channels, point it at your environment, and Beacon opens an incident automatically for every net-new finding at or above a severity threshold you choose. Authenticate with an operator username and a TOPdesk application password; for partners hosting multiple clients, set the branch so each incident routes to the right organisation. Beacon stamps a stable externalNumber for traceability and raises each finding at most once.
Features
- →TOPdesk notification channel: a new channel type that opens incidents via the TOPdesk REST API when new findings are detected.
- →Configurable severity threshold: choose the minimum severity (critical, high, medium, low, or all) that should raise an incident.
- →Branch-based routing: set the TOPdesk branch / client name so environments hosting multiple clients route each incident to the right organisation.
- →Application-password auth: connect with an operator username and a TOPdesk application password — stored encrypted at rest and never shown again.
v1.36.0
18 June 2026
ServiceNow: open an incident automatically the moment a finding appears
Teams that run on ServiceNow can now wire Beacon straight into their incident queue. Add a new ServiceNow notification channel under Settings → Notification channels, point it at your instance, and Beacon opens an ITSM incident automatically for every net-new finding at or above a severity threshold you choose. Authenticate with a dedicated integration user (HTTP Basic) or OAuth 2.0; Beacon maps the finding severity to the incident's impact and urgency, stamps a correlation_id for traceability, and raises each finding at most once. Optional assignment group and category route incidents to the right queue.
Features
- →ServiceNow notification channel: a new channel type that opens incidents via the ServiceNow Table API when new findings are detected.
- →Configurable severity threshold: choose the minimum severity (critical, high, medium, low, or all) that should raise an incident, so low-noise findings stay out of your queue.
- →Company-based routing: set the ServiceNow company/client name so instances hosting multiple client companies route each incident to the right account.
- →Basic or OAuth 2.0 auth: connect with an integration user's username and password, or a registered OAuth application — secrets are encrypted at rest and never shown again.
- →Test before you rely on it: the channel's Test button opens a sample incident to confirm connectivity and permissions.
v1.35.0
18 June 2026
Client portal: a score trend graph and a "closed in the last 30 days" headline
The shareable Client Compliance Portal now tells a story over time, not just a snapshot. We've added an interactive compliance-score trend graph your clients can switch between 30-, 90-, and 365-day ranges, so they can see progress at a glance. We've also surfaced a clear "issues closed in the last 30 days" headline next to the active findings, making the remediation work you've done for them impossible to miss. Both appear automatically — the resolved-activity stat respects the same "show resolved activity" toggle you already control per client.
Features
- →Score trend graph on the client portal: a compliance-score line chart with switchable 30-, 90-, and 365-day ranges, powered by up to a year of score history.
- →"Closed in the last 30 days" headline: a clear count of issues resolved in the last 30 days, shown alongside active findings when resolved activity is enabled.
v1.34.0
18 June 2026
A calmer client page: grouped tabs, fewer buttons, no more sideways scrolling
The client detail page had grown to a single row of up to fifteen tabs — long enough to force a horizontal scrollbar — and a header crowded with separate buttons. We've reorganised it around the jobs you actually do. The tabs are now grouped into a handful of top-level sections (Overview, Findings, Trends, Reports, and an admin-only Settings), each revealing its sub-views beneath the bar, so the navigation wraps cleanly instead of scrolling off-screen. The header keeps the most-used action visible and tucks the rest — Report, Risk register, Edit, and Delete — into a single ⋯ More actions menu, with Delete safely set apart. Each finding card gets the same treatment: its row of buttons collapses into one overflow menu, and the finding title is now click-to-open.
Design
- →Grouped tab navigation: fifteen flat tabs become five task-based sections (Overview, Findings, Trends, Reports, Settings) with contextual sub-views — no more horizontal scrollbar.
- →Decluttered header: the page header now shows one primary action plus a single ⋯ More actions menu for Report, Risk register, Edit and Delete — with the destructive Delete separated out.
- →Simpler finding cards: per-card actions (View full detail, Update status, Assign, Set due date) collapse into one overflow menu, and the finding title is now a direct click target.
v1.33.0
18 June 2026
Frameworks, reorganised: a portfolio overview, per-client controls on the client, and a full control-detail panel
We've split frameworks into the two jobs they actually serve. The Frameworks page is now a clean MSP-wide overview — ranking clients laggards-first per framework with the improving/regressing trend — while the day-to-day work of reviewing a single client's controls now lives right on that client, under a new Frameworks tab. Most importantly, every control now opens a detail panel with the same depth as a regular check: the business risk of not meeting it, how to verify it, links to the underlying Beacon checks (for automated controls) or the framework's own documentation, and — for manual controls — the place to record evidence. No more guessing what a bare control ID means.
Design
- →Frameworks page = portfolio overview: a focused cross-client comparison per framework, with laggard ranking and trend over time.
- →Per-client coverage on the client: each client gets a Frameworks tab for its own controls, manual checks, review sign-off and evidence export.
- →Control detail panel: click any control for its business risk, how-to-verify, framework documentation, and the mapped Beacon checks — the same richness as a regular check.
Features
- →Authored guidance for manual controls: non-scannable controls now carry their own risk, how-to-verify and framework-documentation link, so manual checks are as informative as automated ones.
v1.32.0
18 June 2026
Framework manual checks get second-line sign-off and one-click auditor evidence packs
Two additions that make framework evidence audit-ready. First, separation of duties: a recorded manual check now starts as pending review and must be signed off by a different person — you can never approve your own check, and editing a record sends it back for re-review. Approvals and rejections (with the reviewer and an optional note) are written to the tamper-evident audit log. Second, a one-click auditor evidence pack: with a client selected, export any framework to a single CSV (or JSON) listing every control with its status, mapped check IDs, and — for manual controls — the full record: proof note, proof links, date checked, re-review date, who recorded it, and the review sign-off.
Features
- →Second-line review: approve or reject a recorded manual check; the control shows its review state (pending / approved / rejected) and reviewer.
- →Auditor evidence pack: export a whole framework for a client to CSV or JSON — every control, its status, and the full manual record including the review sign-off.
- →Re-review on edit: editing an already-approved check automatically returns it to pending review, so a sign-off always matches the current evidence.
Security
- →Separation of duties enforced: the person who records a check can never review it, and only users with write access can sign off — enforced server-side, not just in the UI.
- →Review & export auditing: every approval, rejection and evidence export is written to the tamper-evident audit log.
v1.31.0
18 June 2026
Frameworks, upgraded: richer manual checks, an MSP portfolio overview, and an audit trail
Manual framework controls are no longer just a status dropdown. Recording a manual check now captures a small evidence package — the outcome (Pass, In progress, Fail or Not applicable), a proof note, proof links, the date you actually checked, and a re-review date so stale evidence is caught before an audit is. Every record, update and clear is written to Beacon's tamper-evident audit log, giving each framework a defensible history. The Frameworks page also gains an MSP overview that compares your whole client portfolio per framework — ranking laggards first and charting whether you're improving or regressing over time. Status labels for manual checks now match Beacon's automated checks (Pass / Fail) so framework and regular checks read the same way.
Features
- →Evidence-rich manual checks: record an outcome with a proof note, proof links, the date checked and a re-review date — per control, per client.
- →Re-review reminders: controls past (or nearing) their re-review date are flagged so manual evidence never quietly goes stale.
- →MSP overview: a portfolio-wide tab ranks clients laggards-first per framework, with average passing scores and an improving / regressing trend over time.
- →Aligned status labels: manual checks now use Pass / In progress / Fail / Not applicable, matching automated checks.
Security
- →Framework audit trail: every manual check recorded, updated or cleared is written to the tamper-evident audit log — who, what and when, per framework control.
v1.30.0
18 June 2026
Manual review for framework controls Beacon can't auto-scan
Some framework controls — like "Physical devices and systems are inventoried", "Information security policy is established", or "All users are informed and trained" — simply can't be verified from cloud APIs. Previously these sat in an ambiguous "no data" state, indistinguishable from a control that just hadn't been scanned yet. Every framework control is now explicitly one of two kinds: connected to an automated scan, or a manual control that needs a human attestation. Manual controls carry a clear Manual review required status until someone records an outcome. On the Frameworks page, pick a client and mark a manual control as Met, In progress, or Not met with an optional evidence note — tracked per client. Manual attestations are a record-keeping aid and carry no automated compliance-score signal, keeping the score honest.
Features
- →A-or-B coverage: every framework control is either connected to a specific automated check or flagged as a manual control — none silently falls through as permanent "no data".
- →Manual review required status: non-scannable controls get a distinct status and a "manual" chip, instead of being lumped in with not-yet-scanned controls.
- →Per-client attestations: record Met / In progress / Not met with an optional note from the Frameworks page after selecting a client; clear it any time to return to manual review.
- →Honest scoring: manual attestations carry no automated compliance-score signal and never substitute for a qualified assessor.
v1.29.1
18 June 2026
Fix: framework coverage now reflects what was actually scanned
The Frameworks view maps each control (CIS Microsoft 365, NIST CSF, ISO 27001, CIS AWS/GCP, SOC 2, CMMC and NIST 800-171) to the Beacon checks that assess it. A persistence gap meant the framework tags computed during a scan were never written to the check rows, so coverage was derived from an empty set — every control showed as unmapped even though the underlying checks were running and passing or failing correctly. Scans now record each check's framework alignment, so coverage, passing/failing counts and per-control status populate from live scan data. Checks that were skipped because a prerequisite was missing (no subscription, licence or connected service) are deliberately left out of coverage rather than counted as passing, so the numbers stay honest.
Fixes
- →Coverage populates from scans: framework tags are now persisted on every scanned check, so the Frameworks view shows real mapped/passing/failing counts instead of all-unmapped.
- →Applies to every provider: the fix lives in the shared persistence layer, so Azure, AWS and GCP checks all contribute coverage from one place.
- →Skipped checks stay honest: a check that couldn't be assessed (missing subscription, licence or connected service) is excluded from coverage rather than shown as passing.
v1.29.0
18 June 2026
Security: consistent, hardened per-client access checks across the API
A platform-wide hardening of how Beacon authorises access to a specific client's data. Every per-client API endpoint — findings, exports, risk register, report schedules, share links, the client portal, check suppressions, audit log, score history, remediation packs, SLA overrides and more — now runs the same centralised authorization guard before any handler logic. This makes it structurally impossible to ship a new client-scoped route that forgets the access check (the classic cross-tenant data-leak setup), and it standardises the response: a request for a client you can't access returns a clean 403 with a stable CLIENT_FORBIDDEN code. Consistent with this, a request for a client id that doesn't exist now also returns 403 rather than revealing whether the id is real (anti-enumeration). Several endpoints that previously answered an invalid request body with a 500 now return a precise 400.
Security
- →Unified client authorization: all per-client endpoints now enforce access through one shared guard, removing duplicated inline checks and the risk of a new route missing one.
- →Stable 403 shape: access-denied responses return
403 { code: "CLIENT_FORBIDDEN" } consistently across the API.
- →Anti-enumeration: requesting a non-existent client id returns 403 instead of hinting whether the id exists.
- →Cleaner validation errors: more client-scoped endpoints now return a 400 for malformed input rather than a 500.
v1.28.5
18 June 2026
API: malformed requests now return a clear 400, not a 500
A robustness fix for anyone integrating with the Beacon API. Several endpoints — documentation pages, organisations, teams and users — previously answered an invalid request body with a generic 500 Internal server error, which looked like a Beacon outage even though the request itself was the problem. These endpoints now return a precise 400 Bad Request with a stable VALIDATION_FAILED code and a list of exactly which fields were wrong, so client apps can show actionable errors and we no longer page on a caller's typo. The global error handler was also tightened to preserve the intended status code and to never leak stack traces in production.
Fixes
- →400 instead of 500 on bad input: create/update endpoints for docs pages, organisations, teams and users now return
400 { code: "VALIDATION_FAILED", issues } for malformed bodies rather than a 500.
- →Correct error status: the global error handler now honours a status a handler already set (a 4xx is no longer rewritten to 500) and adds a final safety net that converts any stray validation error into a 400.
- →No stack traces in production: error responses continue to omit internal stack traces outside development.
v1.28.4
18 June 2026
Scan engine: crash-safe writes so a scan never leaves your data half-updated
Scan engine: crash-safe writes so a scan never leaves your data half-updated
A reliability hardening of the scan pipeline. Each scan now commits all of its results — findings reconciliation, control statuses, the recomputed compliance score, the score-history snapshot and the connection sync state — in a single all-or-nothing database transaction. If a worker is restarted or a database connection drops mid-scan, the partial work is rolled back instead of leaving, say, new findings recorded but stale ones never resolved, or a score that doesn't match the controls behind it. The next scan simply starts clean. We also consolidated the three cloud providers' control-persistence onto one shared, well-tested path, removing a class of copy-paste drift between Azure, AWS and GCP.
Reliability
- →Atomic scan writes: findings, control statuses, compliance score, score history and connection sync state now commit together in one transaction — a crash mid-scan rolls everything back rather than persisting partial, inconsistent data.
- →Notifications after commit: scan-completed and drift webhooks fire only once results are durably saved, and a failed notification can no longer affect the recorded scan outcome.
- →Unified control persistence: Azure, AWS and GCP now share one persistence and scoring path, eliminating copy-paste drift between providers.
v1.28.3
18 June 2026
Hardened per-client authorization on the client API
A security and robustness pass over every client endpoint. The per-client access check that protects one customer's tenant data from another is now enforced by a single shared guard that runs before each handler, so it can't be accidentally skipped when a new route is added — closing a whole class of cross-tenant data-exposure (IDOR) risk. As part of this, requesting a client you can't access now consistently returns 403 Forbidden rather than revealing whether that client exists, and malformed request bodies (including connection settings) now return a clean 400 Bad Request instead of a generic server error.
Security
- →Centralized per-client access guard: all
/clients/:id endpoints now run the same authorization middleware up front, making it structurally impossible to ship a client route without the cross-tenant access check.
- →No existence leak: fetching a client you aren't authorized for returns
403 whether or not it exists, so the API no longer distinguishes "forbidden" from "not found" for inaccessible ids.
Fixes
- →Bad input returns 400, not 500: setting a team's client permission with a malformed body now returns a validation error instead of a generic server error.
- →Validated connection settings: the optional provider configuration sent when creating or updating a client connection is now schema-checked and rejected with a clear
400 if malformed.
v1.28.2
18 June 2026
Complete, typed API coverage for previously-undocumented endpoints
A developer-facing improvement to our API surface. Around two dozen endpoints that already powered the product — API tokens, custom checks, notification channels, SLA targets, scheduled reports, share links, support tickets, suppressions, cross-client findings, remediation metrics and GDPR export — are now fully described in our OpenAPI specification. That means each one now has a generated, fully-typed client, removing hand-written request code and making the spec the single source of truth.
Improvements
- →OpenAPI coverage: documented 29 previously-undocumented route paths (API tokens, custom checks, notification channels, SLA, report schedules, share tokens, support tickets, suppressions, audit log, cross-client findings, remediation metrics and GDPR export), raising documented coverage from 45 to 74 path items.
- →Generated typed clients: regenerated the TanStack Query hooks and Zod schemas from the spec so these endpoints are consumed through type-safe generated code instead of ad-hoc
fetch calls.
v1.28.1
18 June 2026
Compliance portal: self-service GDPR export, sturdier empty/error states, and a much faster first load
A round of compliance-portal polish. You can now download a copy of your own data (GDPR) straight from your profile — useful on an EU-targeted product where self-service export is expected. The portal also handles the unhappy paths far better: a brand-new tenant with no data, or a momentary network hiccup, now shows friendly empty and retry states instead of a blank or half-drawn screen — including on the public, client-facing report page. Under the hood, the app no longer ships as one giant bundle: pages load on demand, so the login and public-portal screens paint dramatically faster.
Features
- →GDPR data export: a new Your data (GDPR export) section in Profile lets any user download a JSON copy of their personal data — profile, recent activity and session count (admins also get org/user/client records); choose a 30/60/90-day activity window. Session tokens are never exported and requests are rate-limited.
Design
- →Friendlier empty & error states: the dashboard, client detail, and the public report page now show clear empty, loading and retry states instead of blank or half-drawn cards — a fresh tenant no longer sees an empty activity feed on first login.
- →Resilient dashboard: each dashboard card loads independently, so one slow query no longer blanks the whole overview screen.
- →Faster first load: route-based code-splitting means the login and public client-portal screens load a small bundle and heavier pages load only when you open them.
v1.28.0
18 June 2026
Admin portal: faster loads, and clearer empty & error states
The Beacon platform admin portal now loads each screen as its own bundle instead of shipping the whole app up front, so signing in and moving between pages is noticeably quicker. We also hardened the unhappy paths across operator screens: when a panel can't load its data it now shows a clear message with a one-click retry instead of a blank card, and lists that are genuinely empty say so. Destructive actions (like deleting a beta code) now use a proper confirmation dialog, and primary forms gained accessibility fixes (labelled fields and icon-only buttons).
Improvements
- →Route-level code-splitting: the admin portal is split into per-page chunks loaded on demand, shrinking the initial download and speeding up first paint
- →Error states with retry: dashboard cards, the organisations list, org detail (users, support sessions, feature overrides) and beta-access now surface a friendly error with a Retry button instead of a blank panel
- →Consistent empty & loading states: empty lists show a clear message and lists use skeleton placeholders while loading
- →Safer destructive actions: deleting a beta code now asks for confirmation in a dialog rather than a native browser prompt
- →Accessibility: form fields are properly labelled and icon-only buttons have accessible names
v1.27.2
18 June 2026
API: versioned /api/v1 base path and a uniform list response shape
The Beacon API now lives under a versioned base path, /api/v1, so future changes can ship without silently breaking your integrations. At the same time, every paginated list endpoint now returns one consistent envelope — { data, pagination: { total, limit, offset } } — instead of a bare array or an ad-hoc { total, findings } shape, and accepts ?limit= and ?offset= for paging. The unversioned /api prefix continues to work during a transition window but is deprecated; point new integrations at /api/v1. This is a deliberate pre-launch break, made once, behind a version prefix.
Features
- →Versioned API base path: all application endpoints are now served under
/api/v1; /api/health and /metrics stay unversioned for infrastructure scrapers
- →Uniform list envelope: list responses now return
{ data, pagination }, starting with clients, per-client compliance checks, per-client backups, and findings
- →Pagination on high-traffic lists: client, check, backup and finding lists accept
?limit= (default 50, max 500) and ?offset= and report the full total
- →Back-compat alias: the legacy
/api prefix still resolves during a deprecation window so existing clients keep working
v1.27.1
18 June 2026
Reliability: validated startup config & versioned audit chain
Two reliability and security improvements. Beacon now validates its entire configuration at startup — the API and background worker refuse to boot (with one clear, aggregated error) if a required setting like the database URL, encryption key, audit-log signing key, or allowed origin is missing or malformed, instead of failing later when someone first hits the affected feature. Separately, the tamper-evident audit log is now version-aware: the identity-signing upgrade shipped in v1.26.3 no longer re-baselines (and orphans) your existing history — every historical entry continues to verify under the form it was written with, while new entries use the stronger identity-inclusive signature.
Security
- →Audit chain stays verifiable: a per-entry chain version lets historical (pre-upgrade) audit rows keep verifying under their original signature while new rows use the identity-signed form — no more re-baseline gap from the v1.26.3 change
- →Fail-fast configuration: the API and worker validate all required environment settings on boot and refuse to start on misconfiguration, surfacing problems immediately rather than at first use
Fixes
- →Faster dashboards at scale: added database indexes to the per-client activity and backup-run histories so those views stay fast as data grows
- →Data integrity guards: compliance scores are now constrained to the valid 0–100 range at the database layer
v1.27.0
18 June 2026
Reliability: shared state for multi-instance scaling
As Beacon scales out to run on multiple API instances, abuse-protection rate limits and the authorization cache now share state through Redis instead of living in each instance’s memory. Rate limits are now enforced as a single budget across the whole fleet, and a role or permission change takes effect on every instance within one request instead of waiting for a per-instance cache to expire. Single-instance and local setups are unchanged — they continue to use fast in-memory state.
Reliability
- →Fleet-wide rate limits: scan, public-link and export limits are now counted across all API instances, so the intended thresholds hold no matter how many instances are running
- →Faster permission propagation: changing a user’s role or team access now clears the access cache on every instance immediately, eliminating a brief window where an old instance could serve stale permissions
v1.26.4
17 June 2026
Site copy: accurate multi-cloud check count
The marketing site described Beacon as running “63 security checks” (and, on the comparison and ROI pages, “36 checks”) — numbers that long predated the multi-cloud expansion and significantly understated the product. Beacon now ships 190+ built-in security checks across the three supported clouds: 100 Azure (identity, Conditional Access, networking, Key Vault, storage, Defender for Cloud, Intune, Microsoft 365, DevOps), 44 AWS (CIS AWS Foundations plus gap-fills), and 46 GCP (CIS Google Cloud Foundations plus gap-fills). Every check-count reference on the public site now reflects this real, catalog-sourced total.
Fixes
- →Correct check count everywhere: the home page hero, stat, feature card and pricing tiers now say 190+ security checks instead of 63, sourced directly from the Azure, AWS and GCP catalogs
- →Comparison & ROI pages updated: the stale “36 checks” Azure-only claim on the compare and ROI pages is now the accurate multi-cloud 190+ figure
v1.26.3
17 June 2026
Security: hashed password-reset tokens and stronger audit-log tamper-evidence
Two security hardening fixes. Password-reset tokens are now stored only as a one-way hash — the actual token still arrives in your reset email, but the database never holds a usable reset credential, so a leaked backup or read-replica can no longer be turned into an account takeover. Separately, the tamper-evident audit log now signs the who, tenant, and target of each event (not just the action and timestamp), so an attacker with database write access can no longer silently re-attribute an action to a different user, move it to a different client, or change its target without breaking chain verification.
Security
- →Reset tokens hashed at rest: password-reset tokens are now SHA-256 hashed before storage, matching every other token type — the database never stores a usable reset link
- →Audit log signs identity: the audit-chain integrity hash now covers the user, client, and target of each event, closing a re-attribution gap for attackers with database write access
- →Re-baseline note: reset links issued just before this update stop working (they expire within an hour anyway), and audit-chain verification re-baselines from this release
v1.26.2
17 June 2026
Fix: AWS and GCP compliance scores now refresh on every scan
For clients connected to AWS or GCP, the compliance control cards and benchmark scores could freeze at their first-scan values: a defect in how scan results were saved meant subsequent scans silently discarded the updated control status, severity, and evidence. As a result a control that was later remediated (or newly failing) would keep showing its original state even though the underlying findings were updating. The save path has been corrected so each scan now writes the latest control status, severity, evidence, recommendation, and evaluation time — AWS and GCP control cards and scores now track reality on every scan, matching Azure’s existing behaviour.
Fixes
- →AWS/GCP scores no longer freeze: control cards and benchmark scores now update on every re-scan instead of sticking at first-scan values
- →Resilient SLA detection: a transient SLA-breach check failure after a scan is now retried on its own and no longer forces a costly full cloud re-scan
v1.26.1
17 June 2026
Fixes: scrollable sidebar and working client-portal toggle
Two portal fixes. The left navigation sidebar couldn’t scroll, so once several nav sections were expanded the lower items were cut off below the viewport with no way to reach them — the navigation area is now scrollable while the profile and sign-out footer stays pinned. Separately, the Portal access toggle on a client’s Portal tab appeared to do nothing: the client record returned by the API didn’t include the saved portal settings, so the toggle never showed as enabled and the Generate portal link controls stayed hidden. The client API now returns the portal configuration, so the toggle reflects its real state and the link generator appears as expected.
Fixes
- →Scrollable sidebar: the navigation now scrolls when expanded sections overflow the screen, so every item stays reachable
- →Client portal toggle works: the Portal access toggle now reflects its saved state and reveals the Generate portal link controls, instead of silently appearing to do nothing
v1.26.0
17 June 2026
Remediation scripts in check detail and full finding detail
Remediation scripts used to appear only in the inline panel when you expanded a finding on the Findings tab, and that panel showed a single generated variant at a time. The full Remediation scripts section — with a tab per supported language (PowerShell, Azure CLI, Graph API, and so on) and both the Audit (detection) and Remediate snippet for each — now also renders in the check detail view (opened from a Compliance Checks card) and in the View full detail finding drawer. You can review the complete set of audit and remediation scripts across every language side by side, wherever you open a check or finding.
Features
- →Scripts in more places: the Remediation scripts section now shows in the Compliance Checks check-detail drawer and the full finding-detail drawer, not just the inline Findings panel
- →Full script set visible: every supported language is shown as a tab, with both the Audit (detection) and Remediate snippet for each — instead of one variant at a time
- →Download where available: the bundled “Download scripts” action appears whenever the client and check context is known
v1.25.2
17 June 2026
Fix: findings filter now covers every category
The category filter on the Findings view only listed five categories (Identity, Security, Data, Patching, Monitoring). Findings in the other categories — including M365 (e.g. Exchange legacy-authentication issues), Defender, Endpoint, Governance, DevOps, and Backup — could not be filtered to, and were hidden entirely whenever any category filter was applied. The filter now offers every category a finding can carry, so M365 and the rest show up and can be filtered like the others.
Fixes
- →All categories filterable: the Findings category filter now includes M365, Defender, Endpoint, Governance, DevOps and Backup, not just the original five
- →No more silently-hidden findings: applying a category filter no longer drops findings whose category was missing from the list (e.g. Exchange legacy-auth under M365)
v1.25.1
17 June 2026
Fix: Azure compliance checks now populate after a scan
After an Azure scan completed successfully, every check in the compliance tab stayed stuck on Never Scanned — even checks with no prerequisites that should have produced a clean pass. The scan engine was evaluating all 100 Azure checks and opening findings for failures, but it never wrote a per-check result row, so the catalog had nothing to show a status against (only the Microsoft Secure Score controls were being recorded). Azure now writes one result row per catalog check on every scan, exactly like the AWS and GCP scanners already did. Checks that ran show Passing, Warning, or Failing; checks whose prerequisites are missing (no subscription connected, no Azure DevOps or GitHub organisation, or a required permission/licence) show Attempted with a clear skip reason. The compliance score now reflects these checks alongside Secure Score.
Fixes
- →Azure checks now show real status: each of the 100 Azure catalog checks gets a Passing / Warning / Failing result on every scan instead of remaining “Never Scanned”
- →Clear “Attempted” reasons: checks that can’t run (no subscription, no DevOps/GitHub org, or a missing permission or licence) are marked Attempted with the specific reason, rather than silently passing
- →Compliance score reflects every check: the score now combines the Azure catalog checks with Microsoft Secure Score, matching how AWS and GCP are scored
v1.25.0
16 June 2026
Domain-grouped compliance checks with full-page detail view
The compliance tab has been rebuilt around a domain-grouped catalog. Every check — across Azure, AWS, and GCP — is now organised into eight logical domains (Identity & Access, Security & Threat Protection, Data Protection, Network & Infrastructure, Endpoint & Patching, Operations & Monitoring, Governance & Compliance, and Applications & Services), so engineers can scan an entire tenant's posture by area without scrolling through an undifferentiated list. A new filter bar lets you toggle between Assessed, Attempted, and Never Scanned groups, and sub-filter by Failing, Warning, or Passing within the Assessed group. Each failing or warning check now includes a per-resource table showing the current value found and the expected compliant value. A full-page detail route at /clients/{id}/checks/{checkId} provides the complete remediation playbook alongside that resource table for deep-link sharing and bookmarking.
Features
- → Compliance tab now groups checks into 8 domains covering all supported cloud providers
- → Filter bar: toggle Assessed / Attempted / Never Scanned, plus Failing / Warning / Passing sub-filters
- → Assessed cards show a per-resource table with current value vs. expected compliant value
- → Attempted cards show the skip reason and requirement badges for what's needed
- → Never-scanned cards show requirement badges before the first sync
- → Full-page check detail at
/clients/:id/checks/:checkId — deep-linkable, with result table + remediation playbook
- → New
GET /clients/{id}/check-catalog API endpoint returns the merged static + DB catalog for a client
Internal
- → Scan engine now writes a
skip_reason column when a check is skipped due to missing prerequisites
- → Static check definitions for Azure, AWS, and GCP wired into provider registry; DB scan results merged at query time
v1.24.1
16 June 2026
Fix: the “Launch demo” button logs you in again
The live demo on the marketing site stopped signing visitors in: clicking Launch demo sent you to the compliance portal but never created the demo session, leaving you on the login screen. A recent security hardening change had made the publicly advertised demo codes (like BEACON-DEMO) require a server-side configuration value that production never set, so every code was rejected. Because those codes are printed on the home page by design, keeping them secret added no protection — the demo’s read-only safety comes from its locked-down account, not the code. The advertised codes now work again in every environment.
Fixes
- →Demo login restored: the
BEACON-DEMO access code (and its aliases) once again creates a read-only demo session and drops you straight onto the dashboard
- →Consistent across the product: the demo codes the admin tooling and marketing site advertise are now the codes the login actually accepts, in every environment
v1.24.0
16 June 2026
Consistent, clearer remediation guidance across Azure, AWS and GCP
We aligned how findings present their remediation across all three clouds. Azure findings now follow the same model as AWS and GCP: each finding leads with the risk and the “why” and “what”, and a ready-to-run script is offered only when one can actually perform the fix. PowerShell and CLI options now appear strictly when they apply — for example, the two Conditional Access checks that previously showed a placeholder Azure CLI snippet are now PowerShell-only — and checks that genuinely require manual or architectural work show step-by-step written guidance with no misleading script buttons. Beacon remains strictly read-only against your cloud environments.
Improvements
- →Unified remediation presentation: Azure, AWS and GCP findings now share one consistent layout — risk and rationale first, with remediation scripts treated the same way across every cloud
- →Scripts only when they help: PowerShell and CLI options appear only when they can actually carry out the fix; placeholder snippets that just pointed elsewhere have been removed (the Conditional Access checks are now PowerShell-only)
- →Clearer manual guidance: checks that need manual or architectural work now show step-by-step written guidance instead of a script button that can’t complete the change
v1.23.0
16 June 2026
Per-organization SSO and a platform-wide security hardening pass
SAML single sign-on is now configured per organization: each MSP manages its own identity provider in isolation, and you choose your organization at sign-in so Beacon routes you to the right tenant's IdP. Alongside that, we completed a deep security review and shipped the fixes across the board — tightened role permissions so only an owner can grant the top admin role, organization-scoped the audit log and public share links, hardened every outbound webhook and notification against server-side request forgery, made CSV exports safe against spreadsheet formula injection, added rate limiting to public links, locked down internal status/metrics endpoints, and brought our build pipeline and dependencies up to a clean security baseline. Beacon remains strictly read-only against your cloud environments.
Features
- →Per-organization SAML SSO: each organization configures and manages its own Azure/Entra identity provider, fully isolated from every other tenant; pick your organization at the SSO sign-in step
Security
- →Stronger role boundaries: only an organization owner can grant the top admin role, team members are confined to their own organization, and role changes immediately end the affected user's active sessions
- →Tenant-scoped data access: the activity audit log and public share links are now strictly scoped to your organization and honour your portal visibility settings
- →SSRF-hardened integrations: every outbound webhook and notification is validated and pinned so it can never be redirected at internal infrastructure
- →Safer exports and public links: CSV exports are neutralised against spreadsheet formula injection, public links are rate-limited and paginated, and internal status/metrics endpoints no longer expose operational detail
- →Clean supply-chain and build pipeline: dependencies updated to a zero-known-vulnerability baseline, with least-privilege CI, pinned build actions, and added static-analysis and secret scanning
v1.22.0
16 June 2026
Deeper framework coverage, Autotask, branded PDF reports, simpler tenant onboarding & guided remediation
A broad release aimed squarely at how MSPs actually work. Your existing checks now map to more of the standards your clients ask about — with explicit CIS Level 1 / Level 2 profiles and coverage aligned with CMMC 2.0 and NIST SP 800-171, shown honestly alongside the control families Beacon does not assess. Datto Autotask joins ConnectWise, HaloPSA, and Freshservice as a first-class PSA target. Scheduled and on-demand reports can now go out as branded, client-ready PDFs using your logo and colours. Connecting a Microsoft 365 tenant is simpler: a one-click admin-consent flow against Beacon's multi-tenant app means no client secret to store — while the existing App Registration method stays fully supported. And remediation is now guided end-to-end: hand a fix off to your automation or PSA, or apply a curated fix in-product — always read-only by default, opt-in per category, and never running anything until an admin confirms exactly what will happen.
Features
- →Broader framework coverage: a new Framework Coverage page maps your checks to CIS Microsoft 365 / Azure Level 1 and Level 2 profiles, and surfaces coverage aligned with CMMC 2.0 (L1 & L2) and NIST SP 800-171 — mapped to, never a certification claim
- →Honest, by design: every framework view clearly lists the control families Beacon does not assess, so what you show a client’s auditor is never overstated
- →Datto Autotask integration: escalate findings into Autotask tickets with severity-mapped priority, alongside the existing ConnectWise, HaloPSA, and Freshservice connectors
- →Branded PDF reports: scheduled and on-demand reports can now be generated as client-ready PDFs with your logo and brand colours
- →One-click tenant onboarding: connect a Microsoft 365 tenant by admin consent to Beacon’s multi-tenant app — no client secret to store — with the App Registration method still fully supported
- →Guided, admin-confirmed remediation: hand a fix off to your automation or PSA, or apply a curated low-risk fix in-product — read-only by default, opt-in per category, and never executed until an admin confirms exactly what runs, with every action written to the tamper-proof audit log
v1.21.0
16 June 2026
Remediation scripts for every fixable finding — PowerShell-first, across Azure, AWS & GCP
Every finding that can be fixed by a script now comes with a ready-to-review remediation script you can copy, download, and run yourself. Azure and Entra checks generate PowerShell (Microsoft Graph / Az) and Azure CLI; AWS checks generate PowerShell (AWS Tools for PowerShell) and AWS CLI; GCP checks generate gcloud commands. The remediation panel is now capability-aware: it shows only the script types that can actually fix a given check — so you'll never see a PowerShell button that can't do the job — and for findings that need manual or architectural work (credential rotation, an OS migration, a licence purchase, deploying a SIEM) it shows step-by-step guidance with no script buttons at all. Beacon remains strictly read-only: every script is generated text for your engineers to review, test in a non-production environment, and run manually — Beacon never touches your tenant, account, or project.
Features
- →PowerShell-first, multicloud: ready-to-run remediation scripts for scriptable checks across Azure/Entra (PowerShell + Azure CLI), AWS (AWS Tools for PowerShell + AWS CLI), and GCP (gcloud)
- →Only the variants that fit: the panel shows just the script types that can fix each check — the PowerShell option is hidden where it can't help, and GCP shows gcloud rather than PowerShell
- →Guidance when a fix can't be scripted: manual or architectural findings show clear step-by-step guidance instead of a script button that wouldn't work
- →Safe by design: every script carries a read-only header and a preview/dry-run step; high-impact fixes print the command for review rather than running it — Beacon never executes anything against your environment
v1.20.0
15 June 2026
Compliance checks you can actually act on — one click to the full finding
The compliance checks list is no longer a wall of terse one-liners. Each check is now a scannable row showing its real title, its check ID (like GCP-VM-003), severity, and a one-line summary — and clicking it opens a single, shareable finding detail drawer with the complete playbook: a plain-English business-risk summary, step-by-step remediation, the roles you need, how to verify the fix, how to roll it back, and grouped "Understand the risk" / "How to fix" links. The same drawer opens from the Findings Explorer and from a client's page, and its URL is deep-linkable, so you can drop a link to a specific finding straight into a ticket or chat. Behind the scenes, every check now carries a stable identifier so this guidance resolves consistently across Azure, AWS, and GCP.
Features
- →Scannable check rows: each compliance check now shows a clear title, its check ID, severity, category, and a one-line summary instead of a bare placeholder
- →Deep-linkable finding drawer: open the full guidance — business risk, remediation steps, required roles, verification, rollback, and categorised reference links — in one place, with a shareable URL you can paste into a ticket or chat
- →Act without leaving the queue: change a finding's status, assign an owner, or set a due date right from the drawer
- →One detail surface everywhere: the same drawer opens from the checks list, the Findings Explorer, and a client's page
- →Richer demo data: the multicloud demo now shows real check titles and risk summaries instead of generic placeholders
v1.19.0
15 June 2026
A fully interactive multicloud demo — Azure, AWS & GCP
The Beacon demo is now a hands-on sandbox spanning all three clouds. The sample portfolio has been rebuilt with six themed client organisations — three on Azure, one on AWS, one on GCP, and one running across all three — each with realistic, deterministic compliance results and a few deliberately dramatic findings so you can see Beacon at its best. The demo is no longer read-only: every feature is unlocked and fully clickable, with friendly inline notices showing which plan a feature would need in a live account, instead of upgrade walls. Billing is tucked away so there's nothing to get in your way — just explore.
Features
- →Multicloud demo portfolio: six themed clients across Azure, AWS, and GCP — including one multi-cloud organisation with a separate connection scored independently per cloud
- →Realistic, repeatable data: deterministic generation gives each client a believable mix of passing, warning, and failing checks, with a 14-point compliance-score history per connection
- →Fully interactive, no walls: the demo is now a live sandbox — every feature is unlocked and clickable instead of read-only
- →Plan-aware notices: features that need a paid plan in a real account now show a gentle inline note explaining the requirement, rather than blocking you
- →Distraction-free: billing and subscription settings are hidden in the demo so you can focus on the product
v1.18.0
15 June 2026
Remediation & business-risk guidance on every scan — across Azure, AWS & GCP
Every check Beacon runs now comes with complete guidance, no matter which cloud it scans. Alongside the step-by-step fix (required roles, how to verify, and how to roll back), each finding now carries a plain-English Business risk summary written for managers — what the issue could cost the business in a breach, outage, fine, or failed audit — plus curated documentation links split into "Understand the risk" and "How to fix". The business-risk summary and fix links also appear in the client portal and in exported reports, so the people approving the work can see why it matters. This guidance now spans Azure, AWS, and GCP equally, and a build-time check guarantees no scan can ship without it.
Features
- →Business-risk summaries for managers: every finding now explains its real-world business impact in plain English, with no technical jargon
- →Categorised documentation links: each check links out to "Understand the risk" and "How to fix" references, so you can dig into both the threat and the solution
- →Full multicloud parity: AWS and GCP checks now get the same depth of remediation guidance that Azure checks already had — required roles, verification, and rollback included
- →Guidance in the client portal & exports: the business-risk summary and fix links now surface in the client-facing portal and in findings/evidence exports
- →Guaranteed coverage: a build-time gate ensures every current and future check — on any cloud — ships with complete guidance
v1.17.3
15 June 2026
Fix: portals no longer "refresh" and close your menus
We fixed a long-standing annoyance where the compliance and admin portals could appear to refresh on their own — closing open dropdowns and pop-up menus and jumping you back to the top of the page, often just after switching back to the browser tab. The cause was a routing quirk that rebuilt the whole page whenever your session was re-checked in the background. Pages now update in place, so menus stay open and your scroll position is preserved. No action is required.
Fixes
- →No more phantom refreshes: returning to a portal tab no longer tears down and rebuilds the page, so open menus and pop-ups stay open
- →Scroll position preserved: background session checks no longer scroll you back to the top of the page
- →Both portals: the fix applies to the compliance portal and the admin portal alike
v1.17.2
15 June 2026
Session hygiene and review follow-ups
A second maintenance pass from the codebase review. Changing a password, resetting one, or turning off two-factor now signs out your other sessions, and an in-progress two-factor login is re-checked against the portal it was started for. The rest is internal polish — faster SLA and findings handling, and a batch of small portal fixes. No action is required.
Security
- →Sessions revoked on credential changes: changing or resetting your password, or disabling two-factor authentication, now ends your other active sessions; the device making the change stays signed in
- →Portal gate on two-factor completion: the portal/role check from sign-in is now re-applied when the second factor is entered, so a role change mid-login can't land you in a portal you're no longer allowed to use
Performance
- →Set-based SLA breach detection: SLA due-date and breach handling now runs as batch updates instead of a row-by-row loop
- →Server-side findings search: the per-client findings search now filters and limits in the database rather than loading every row and filtering in memory
Fixes
- →Platform-admin management: operator accounts created under the new platform-admin role are now correctly listed and removable in the admin portal
- →Admin dashboard & refresh: the open-tickets count and list now come from one source, and the infrastructure "Refresh" also updates demo codes
- →Compliance portal polish: consistent API paths, a safer copy-to-clipboard, validated plan/interval links, divide-by-zero guards on category bars, and assorted smaller UI fixes
v1.17.1
15 June 2026
Hardening pass: tenant isolation, scan reliability, and fixes
A focused maintenance release from a full codebase review. We closed several tenant-isolation and request-forgery gaps, made the background scan and report engine safe to run across more than one worker, and fixed a handful of portal bugs — including one where toggling an organisation feature could wipe an operator's note. No action is required; all changes are backward-compatible.
Security
- →Tenant-isolation guards: granting or removing a team's per-client permissions now verifies the caller has access to that client and that the team belongs to their organisation
- →Webhook test SSRF guard: the "send test" ping now runs the same internal-address protection as live deliveries and no longer echoes internal error details
- →Single-use recovery codes: two-factor recovery codes are consumed atomically, so a code can't be spent twice under concurrent requests
- →Trusted reset links & billing binding: password-reset links are built from a trusted base URL rather than request headers, and Stripe checkout can no longer rebind an organisation to a different customer
- →Fail-closed subscription gate: a database error while checking an organisation's status now denies the request instead of letting it through
Performance
- →No duplicate scans or reports: scans and scheduled reports are now claimed atomically, so running multiple workers can't double-launch a scan or send a report twice
- →Stuck-scan recovery: connections left mid-scan by a restarted worker are reset automatically instead of being skipped forever
- →Faster reconciliation: finding reconciliation no longer issues a per-result database round-trip, removing an N+1 on every scan
Fixes
- →Feature-override notes preserved: toggling an organisation feature override in the admin portal no longer erases the operator's note
- →Beacon Support toggle: the organisation-settings switch now reflects and saves server state correctly
- →Delivery history & findings list: retrying a delivery now refreshes its row, and the findings list returns a correct total for pagination
v1.17.0
15 June 2026
A dedicated platform-admin role and a three-way documentation split
Beacon's platform operators now have their own first-class turbo admin role instead of sharing the top customer role. The two tiers are cleanly separated: a turbo admin opens only the Admin Portal and can reach a customer's data solely through an explicit, audited support session — never directly. Alongside this, documentation now lives in three purpose-built homes — public guides on the marketing site, an operator handbook in the Admin Portal, and the existing in-product guides for MSP teams — with shared components and a per-audience editor. The public site has also been repositioned to reflect Beacon's full multicloud coverage.
Security
- →Separate platform-admin role: Beacon operators use a dedicated
turbo_admin role (admin portal only); the customer super_admin role is now strictly scoped to its organisation, closing the cross-tenant ambiguity of the old shared role
- →Support-mode-only access: a platform admin can never touch a customer's data directly — only via an explicit, fully audited support session — and the role cannot be created or granted through any organisation-level API
- →Fixed an over-broad access guard: a routing bug that could return “platform admin required” on several team features (risk register, saved views, baseline catalog, frameworks) has been corrected so the guard only applies to operator endpoints
Feature
- →Three-way documentation split: public docs on the marketing site, a new operator handbook in the Admin Portal (getting started, support mode, roles & access, organisation lifecycle), and the existing MSP guides — all sharing a common docs layout
- →Per-audience docs CMS: the live-editable docs system now scopes pages to an audience, so operators can publish admin-only pages separately from customer-facing ones
Design
- →Multicloud marketing refresh: the homepage, pricing, comparison and supporting pages now reflect Beacon's Azure, AWS and GCP coverage rather than reading as Azure-only
- →New public setup guides: AWS and GCP onboarding guides added to the public documentation hub
v1.16.0
15 June 2026
Encryption in transit, end to end
Beacon already encrypts stored secrets at rest with AES-256-GCM. This release makes the in-transit story just as strong: every connection now runs over TLS — including the link between Beacon's services and its database — so credentials and scan data are never carried over the network in the clear. We also extended HTTP Strict Transport Security to every web surface and hardened email delivery so it can never silently fall back to plaintext.
Security
- →TLS on the database connection: traffic between Beacon's services and PostgreSQL is now encrypted in transit, closing the last hop that wasn't already protected by TLS
- →HSTS everywhere: the marketing site, compliance portal, and admin portal now send Strict-Transport-Security headers, matching the API and preparing for HSTS preload
- →No silent email downgrade: SMTP notification delivery now requires TLS 1.2 or higher and refuses to send if a secure connection can't be established
v1.15.0
15 June 2026
AWS and Google Cloud compliance scanning
Beacon now scans Amazon Web Services and Google Cloud alongside Azure, with the same score, benchmark, findings, framework reporting and alerting across all three. Both connect read-only with no stored customer secrets — AWS via a cross-account IAM role (CloudFormation one-click or manual), GCP by granting Beacon's scanner service account access (Cloud Shell one-click or manual). AWS scans every enabled region; GCP scans every project in the organization — each with drift detection that flags newly-appeared regions or projects for approval.
Feature
- →Amazon Web Services: 45 hand-coded checks across IAM, S3, networking, EC2/EBS, encryption, RDS, logging, GuardDuty and tagging (CIS AWS Foundations plus security gap-fills), scanned across all enabled regions with region-drift alerts
- →Google Cloud: 47 hand-coded checks across IAM, logging, networking, compute, storage, Cloud SQL, BigQuery, KMS and Security Command Center (CIS GCP Foundation plus gap-fills), scanned org-wide across every project with project-drift alerts
- →Guided onboarding: a provider selector plus one-click setup wizards — AWS "Launch Stack" CloudFormation and GCP "Open in Cloud Shell" — with manual fallbacks and an "approve region/project" action for expected drift
Frameworks
- →New framework coverage: CIS AWS Foundations, CIS GCP Foundation, NIST SP 800-53 and SOC 2 mappings, so AWS and GCP clients get the same per-framework coverage reporting as Azure
- →New documentation: dedicated AWS and GCP setup guides plus updated API-integration docs covering the new connection shapes and onboarding endpoints
v1.14.0
14 June 2026
Multi-cloud foundation: provider-aware architecture
Under-the-hood groundwork to extend Beacon beyond Azure. The platform is now provider-aware: each client connection carries its own cloud provider and credentials, stored in a dedicated, individually-encrypted connection record. Azure remains the only provider today and its behaviour is unchanged. This release lays the foundation for Amazon Web Services and Google Cloud support, coming next.
Platform
- →Provider abstraction: the scan engine, credential store, and API now route through a cloud-provider layer, so new clouds slot in without touching existing Azure functionality
- →Per-connection credentials: each connection's credentials live in a dedicated record, encrypted individually with AES-256-GCM, replacing the previous Azure-only fields
- →AWS and Google Cloud next: the client setup flow now starts with a provider selector (Azure today) in preparation for multi-cloud compliance scanning
Internal
- →Azure behaviour preserved: the full set of Azure compliance checks is unchanged, verified byte-for-byte against the previous engine before release
v1.13.0
13 June 2026
Content marketing launch — blog, Netherlands go-to-market, and EU legal groundwork
Groundwork for taking Beacon to market in the Netherlands and the wider EU. A new public blog with high-intent articles for MSPs evaluating Azure compliance tooling, plus internal go-to-market, outreach, and EU/AVG legal-readiness documentation. No application behaviour changed — this release is marketing content and internal strategy material.
Features
- →Public blog: new
/blog section with an index and three SEO-focused articles — "MSP Azure compliance monitoring", "CIPP hosted alternative", and "How to prove client Azure compliance (EU/AVG edition)" — added to the sitemap for discovery
- →Netherlands launch playbook: internal go-to-market layer covering the EU data-residency/AVG wedge, EUR + BTW pricing, Dutch channels, a 90-day plan, and the steps to legally start selling in the Netherlands
- →Outreach templates: ready-to-send cold email (English and Dutch), community, LinkedIn, founding-partner, and re-engagement messages with tone guidance
Internal
- →EU legal-readiness pack: a lawyer-review gap analysis and draft clauses for the existing privacy, DPA, and terms pages, tailored for Dutch/EU (AVG) compliance — Dutch governing law, international-transfer/SCC handling, legal bases, B2B liability, and EUR/BTW billing
v1.12.0
12 June 2026
GDPR compliance, performance monitoring, and operator tooling improvements
Three independent improvements bundled into one release: full GDPR Article 17 (Right to Erasure) and Article 20 (Right to Portability) compliance with self-service org deletion and a data export endpoint; Vercel Speed Insights on both the marketing site and the compliance portal; and a structural decomposition of the operator backend from a single 1,169-line file into six focused modules.
Features
- →GDPR Article 17 — self-service org deletion: org super-admins can now delete their organisation via
DELETE /api/orgs/me — requires password confirmation (or org-name for SAML-only accounts); atomically anonymises all audit log references and invalidates all sessions before removing the org row
- →GDPR Article 17 — hardened user deletion:
DELETE /users/:id now runs inside a transaction that NULLs the user's references in the audit log and force-invalidates all their sessions before the row is removed
- →GDPR Article 20 — data export: new
GET /api/gdpr/export endpoint returns a structured JSON file containing your profile, recent audit activity, and (for org admins) the full org membership and client list; rate-limited to 5 exports per org per day; accepts ?period=30|60|90
- →Audit log retention policy: nightly cleanup job prunes general audit log entries older than 365 days and financial records older than 7 years; both thresholds configurable via
AUDIT_LOG_RETENTION_DAYS and AUDIT_LOG_FINANCIAL_RETENTION_DAYS env vars
- →Report recipient emails encrypted at rest: the
recipients column on report schedules now stores email addresses encrypted with AES-256-GCM; existing plaintext rows are transparently decrypted on read and re-encrypted on next write
- →Vercel Speed Insights: real-user performance monitoring enabled on the marketing site and compliance portal — tracks Core Web Vitals and page load timing across all routes in production
- →Operator org deletion: platform admins can now delete any organisation via
DELETE /api/operator/orgs/:id with the same anonymisation guarantee as self-service deletion
Internal
- →Operator backend decomposed: the 1,169-line
operator.ts has been split into six focused modules — operator-stats, operator-orgs, operator-audit, operator-support, operator-overrides, and operator-waitlist — with requirePlatformAdmin applied once at the router level in each
v1.11.0
12 June 2026
Pre-launch security hardening — auth, multi-tenant isolation, credentials, and input validation
A comprehensive pre-production security review covering six domains across all 297 TypeScript files in the platform. Fixes span authentication hardening, multi-tenant data isolation, credential encryption at rest, CSV and path-injection prevention, and business-logic race conditions — none of which were user-visible but all of which matter before real customer data lands.
Security
- →Password reset race condition: token invalidation switched from UPDATE SET used=true to a hard DELETE WHERE used=false RETURNING — two concurrent reset requests can no longer both succeed with the same token
- →Per-email login rate limiting: added a second rate limiter keyed on email address (10 req/15 min) in addition to the existing IP limiter — prevents distributed credential-stuffing that bypasses IP limits
- →Cross-org custom check exposure: GET /custom-checks was returning all organisations' check definitions to any authenticated user — now filtered to the caller's org
- →Cross-org user role modification: PATCH /users/:id had no ownership check on the target user — an admin in org A could modify roles for users in org B; now guarded with an org membership check and an atomic UPDATE WHERE clause
- →Notification channel credentials encrypted at rest: Slack webhook URLs, SMTP passwords, and PSA API keys were stored as plaintext JSONB — now encrypted with AES-256-GCM before write, decrypted only at dispatch time; GET responses return masked values
- →PSA escalation credential bypass: the PSA ticket escalation path was passing raw encrypted config to the PSA HTTP client, causing auth failures and leaking ciphertext into Authorization headers — now decrypted before use
- →CSV formula injection: export endpoints (findings, compliance, evidence packs) now prepend a ' character to any cell value starting with =, +, -, @, tab, or carriage return — prevents spreadsheet formula execution on imported exports
- →Raw integer path params: three endpoints used Number(req.params.id) directly, producing NaN on non-numeric input that PostgreSQL coerces to 0 — replaced with parseIntParam() which rejects invalid input with 400
- →Concurrent scan dedup: two simultaneous manual scan triggers for the same client could both proceed — the sync endpoint now returns 409 if syncStatus is already "syncing"
- →Client creation race condition: the plan client-count cap was checked then inserted in two separate queries, allowing concurrent requests to exceed the limit — replaced with a SELECT FOR UPDATE transaction
- →Stripe and internal error leakage: two catch blocks returned raw error strings (including Stripe internals) to the HTTP client — replaced with generic messages logged server-side
v1.10.0
12 June 2026
Endpoint, DevOps, and PSA escalation — the largest scan expansion since launch
Beacon's scan engine now reaches two entirely new surfaces: Intune-managed endpoints and developer tooling (Azure DevOps and GitHub). Five new Intune checks surface non-compliant, unsupported, and stale devices across your client fleet. Seven DevOps checks flag public ADO projects, over-privileged service connections, unreviewed branches, secret-like pipeline variables, and unpinned GitHub Actions workflows. On top of the new scan coverage: a cross-client findings view with bulk acknowledge/assign/suppress actions (Pro+), automatic PSA ticket escalation for overdue findings (Growth+), and a Remediation Dashboard showing per-client MTTR, SLA breach rates, and weekly trends.
Features
- →Intune endpoint checks (5 new): unenrolled devices, non-compliant devices, unsupported Windows build (below 19H1), stale device sync (14+ days), Windows Update ring not configured — all findings capped at 10 devices per check with NIST/ISO/CIS framework tags
- →Azure DevOps checks (4 new): public projects discoverable externally (DEV-001), service connections using Subscription-scope service principals (DEV-002), main/master branches without a blocking reviewer policy (DEV-003), pipeline variables with secret-like names stored unencrypted (DEV-004)
- →GitHub checks (3 new): default branch protection absent (DEV-005), branch protection without required pull request reviews (DEV-006), workflow steps using unpinned third-party actions instead of full SHA refs (DEV-007)
- →Cross-client findings view (Pro+): aggregate findings from all clients in a single table with severity, status, and client filters; bulk actions let engineers acknowledge, assign, or suppress up to 500 findings at once
- →Automatic PSA escalation (Growth+): hourly job creates PSA tickets for open findings that have passed their SLA due date; configurable severity threshold and ticket priority per organisation; supports ConnectWise, HaloPSA, and Freshservice
- →Remediation Dashboard (Growth+): per-client MTTR, SLA breach rate league table, assignee response-time breakdown, and weekly opened-vs-resolved bar chart — selectable 30/60/90-day windows
- →Credential management UI: new Integrations tab in client settings for configuring the ADO organisation name and adding/removing GitHub PATs per organisation (PATs encrypted at rest, never returned in API responses)
v1.9.0
12 June 2026
M365 + Defender for Cloud scan coverage and client compliance portal
Beacon's scan engine now covers Microsoft 365 and Defender for Cloud alongside its existing Azure/Entra ID checks — adding 18 new compliance checks across Exchange, SharePoint, Teams, and Defender workload protection. MSPs on the Growth plan and above can now share a read-only client compliance portal with each Azure tenant they manage: the client gets their own URL showing current score, active findings, and resolved activity, with no access to internal MSP tooling or other clients' data.
Features
- →M365 scan checks (7 new): legacy authentication not blocked by Conditional Access (M365-002), DKIM not configured (M365-004), DMARC missing or set to p=none (M365-005), SharePoint anonymous sharing links enabled (M365-006), SharePoint external sharing policy (M365-007), Teams unrestricted external federation (M365-009)
- →Defender for Cloud checks (7 new): stale unresolved recommendations >30 days (DEF-001), active high/critical alerts (DEF-002), workload protection not enabled for VMs, SQL, Storage, Containers (DEF-003–006), regulatory compliance score below 70% (DEF-007)
- →Client compliance portal (Growth+): share a signed, expiring URL with each client — they see their compliance score trend, active findings grouped by severity, and resolved activity. MSPs control exactly what's visible per client
- →Portal access controls: tokens expire after 90 days; MSPs can revoke at any time; multiple tokens per client supported; portal disabled by default until explicitly enabled
- →Framework mappings: new checks mapped to CIS Microsoft 365 Foundations, NIST CSF, and ISO 27001 controls where applicable
v1.8.1
12 June 2026
Collapsible sidebar navigation
The compliance portal's left navigation has been reorganised from a single flat list into labelled, collapsible sections — Core, Resources, Admin, and Settings. Super-admin accounts previously saw up to 15 items with no visual grouping; the secondary sections now start collapsed and remember their state across reloads. Navigating directly to a page inside a collapsed section auto-expands it.
Design
- →Grouped sections: nav items split into Core (always visible), Resources, Admin, and Settings — each with a labelled, clickable header
- →Collapsible with item count: collapsed sections show a count badge so it's clear items are hidden; chevron rotates on expand
- →Persistent state: open/closed state saved in localStorage and restored on reload
- →Auto-expand on navigation: navigating to a route inside a collapsed section opens it automatically
v1.8.0
11 June 2026
Beta access control — invite codes, waitlist, and test-mode banner
Beacon's registration flow now has a three-state access gate — closed (waitlist only), beta (invite code required), and open (public launch). Platform admins can manage the live state, create and revoke named invite codes with optional use limits, and view the waitlist from a new Beta Access page in the admin portal. An amber test-mode banner in the compliance portal prevents testers from mistaking the Stripe sandbox for a live environment.
Features
- →Three-state registration mode: switch between Closed, Beta, and Open from the admin portal at any time; the compliance portal registration pages adapt instantly without a redeploy.
- →Invite code gate: create named beta codes with optional use limits; codes are validated atomically on registration to prevent race-condition overuse; a permanent master code is available via environment variable for internal access.
- →Waitlist: when registration is closed, both the MSP and Solo registration pages replace the form with a waitlist sign-up; the admin portal shows all collected emails with source and timestamp and allows individual removal.
- →Test-mode banner: a dismissible amber bar at the top of the compliance portal shell (controlled by
VITE_STRIPE_TEST_MODE) reminds testers that no real charges will be made; dismissal is per-session so it reappears on fresh login.
- →Admin portal Beta Access page: manage registration mode, generate and revoke invite codes, and browse the waitlist — all from a new dedicated page linked in the admin nav.
v1.7.2
11 June 2026
Portal link routing fix
All Sign in, Get started, Portal login, and demo-login buttons on the marketing site were resolving against the marketing origin (beaconcompliance.eu) instead of the compliance portal (compliance.beaconcompliance.eu), causing 404s for every action button in production. The inline PORTAL_ORIGIN helper is now hardcoded to the correct portal subdomain in all eight marketing pages.
Fixes
- →Sign in nav button and footer Portal login now correctly link to
compliance.beaconcompliance.eu instead of the marketing site
- →All plan Get started buttons (Solo, Starter, Growth, Pro) now point to the compliance portal
/register route for Stripe checkout
- →Demo-login flow redirects to the correct portal API endpoint rather than a non-existent marketing site path
- →Fix applied consistently across all eight marketing HTML pages (index, changelog, compare, dpa, privacy, roi, security, terms)
v1.7.1
June 2026
Security hardening & pre-beta stability
A focused hardening pass ahead of the live beta. Four authorisation and authentication findings from an internal security review are closed, and a batch of build-blocking artifacts left by an earlier branch merge are resolved so the full stack compiles cleanly again. No user-facing feature changes.
Security
- →Cross-org team authorisation: team update, delete, and member add/remove endpoints now verify the team belongs to the caller's organisation, closing an IDOR path between tenants.
- →Support-session protection: the originating platform-admin session identifier is now encrypted at rest, preventing replay if the session store is ever exposed.
- →MFA recovery brute-force resistance: recovery-code attempts are now rate-limited per account, not just per IP, defeating address-rotation attacks.
- →CSRF & demo hardening: state-changing auth requests without an Origin header are rejected, and the read-only demo account now uses a randomly generated credential.
Stability
- →Build integrity restored: resolved leftover merge artifacts across the API server and both portals — duplicate imports, a duplicated route, interleaved component bodies, and unterminated markup — so the entire workspace type-checks cleanly.
- →Portfolio & org views recovered: the client portfolio table, client detail tabs, and admin org-detail console were reassembled from their intended sources with no loss of functionality.
v1.7.0
June 2026
Platform expansion — 22 features across competitive parity, MSP manageability, and admin operations
The largest release wave in Beacon's history. Twenty-two full-stack features land simultaneously, closing the gaps against CIPP, Cynomi, and Vanta/Drata: framework-to-control mapping, posture drift tracking, compliance baselines, a vCISO risk register, and a dramatically expanded check library. MSP engineers gain bulk actions, saved views, remediation workflows with assignment and MTTR, auto-generated PowerShell and Azure CLI remediation scripts, webhook delivery history with manual retry, and a portfolio command-center. Beacon admins gain cross-org audit log with HMAC integrity, a scan-fleet health dashboard, per-org feature-flag overrides, revenue and churn signals, support-session audit trails, and full org lifecycle management.
Competitive parity
- →Framework-to-control mapping: CIS M365 Foundations, NIST CSF, and ISO 27001 controls mapped to every check; per-client and per-org coverage views on a new Frameworks page.
- →Posture drift & regression tracking: detect when a check regresses from pass to fail, record a posture-event timeline per client, and fire a
drift_regression webhook and notification event.
- →Compliance baselines & targets: set required score or required controls per client; dashboard badges and
baseline_breached alerts when a client falls below target.
- →Risk register / vCISO summary: severity-weighted open findings presented as tracked risks with owner and status; an executive-summary view suitable for client deliverables.
- →Expanded check library: new M365 CIS Foundations and identity checks added to the scan engine, each tagged to the framework mapping above.
- →Evidence / audit pack export: downloadable findings + check results + framework mapping + scan timestamps as CSV or JSON; gated at the Pro plan tier.
Remediation
- →Comprehensive remediation guidance: every check now ships a structured playbook — plain-language impact summary, step-by-step portal instructions, required Entra/Azure permissions, a verification step, and a rollback note.
- →Auto-generated remediation scripts: for each open finding, Beacon generates a ready-to-run PowerShell (Graph/Az PowerShell) and Azure CLI snippet parameterised with the affected resource and tenant. Copy script, download
.ps1, or download a per-client remediation pack. Scripts include a -WhatIf dry-run variant where available. Beacon remains strictly read-only — scripts are provided for the MSP to review and run.
- →Remediation workflow & assignment: assign a finding to a team member with a due date; richer status progression (open → in_progress → resolved); MTTR tracking in finding stats.
MSP manageability
- →Guided Azure onboarding wizard: step-by-step App Registration setup with a required-permissions checklist, live credential validation, and a "run first scan" CTA.
- →Scan health visibility: per-client last/next scan, surfaced permission and connection failures with actionable error detail, and a manual re-scan button.
- →Per-client scan scheduling: configurable scan frequency per client and per tag; the scan worker respects each client's interval independently.
- →Bulk finding actions: multi-select acknowledge, suppress (with reason), or assign findings from the findings list in a single operation.
- →Advanced filtering & saved views: compose filters across severity, category, framework, status, client, and tag; persist views per user for instant recall.
- →Notification & webhook delivery history: every delivery attempt (status, HTTP response, timestamp) is persisted; a history log in the UI with a manual retry action per entry.
- →Portfolio command-center: the client list is now a sortable portfolio table showing score, trend sparkline, open-critical count, last scan, tag filter, and CSV export.
Admin operations
- →Cross-org audit log viewer: searchable and filterable audit log across all organisations, with an HMAC-chain integrity indicator on each entry.
- →Scan-fleet health dashboard: worker leader/heartbeat status, due and overdue clients, recent scan failures, and token/permission errors — across all orgs in one view.
- →Per-org feature-flag overrides: grant or restrict individual features on top of a plan's defaults without a plan change; consulted by the plan guard on every request.
- →Revenue & churn signals: MRR by plan, trial-to-paid conversion rate, expiring and at-risk trials, and tenant-growth expansion signal — all derived from live org and plan state.
- →Support-session audit trail: every Beacon support session (who, which org, when, entry and exit) is logged and written to the audit chain; history view in the admin portal.
- →Org lifecycle & plan management: change plan and billing interval, apply manual client-limit overrides, suspend or reactivate an org with a reason, and extend a trial — all from the org detail page in the admin portal.
v1.6.1
June 2026
Security hardening — secret rotation
Rotated all exposed secrets (encryption key, database password, HMAC audit key, and API keys) and purged the committed .env from git history. Added a key-rotation migration script for future key rotation operations.
Security
- →Rotated ENCRYPTION_KEY, DB_PASSWORD, AUDIT_HMAC_KEY, SETUP_SECRET, Stripe keys, and Resend API key
- →Purged committed
.env from all git history using git filter-repo
- →Added
scripts/rotate-encryption-key.ts for future AES-256-GCM key rotation
- →Hardened
.env.example with lifecycle documentation for all secrets
v1.6.0
June 2026
Emerald refresh, enforced plan limits, and a read-only demo
A wide release wave that resets how Beacon looks and how it is bought. An emerald visual
refresh now runs across both portals and the marketing site, plan limits and feature gates
are enforced rather than advisory, and two new pages help teams compare Beacon and size the
return on investment. Sign-up moves away from a free trial: prospects explore a read-only
demo, and paid sign-up takes a card up front with annual billing selected by default.
Reliability and observability work rounds out the release.
New feature
- →Enforced plan limits: client and seat caps for each plan are now checked at the API layer, so an account cannot exceed the tier it pays for.
- →Feature gates: premium capabilities are gated by plan and surface a clear upgrade path instead of failing silently.
- →ROI page: a new marketing page that estimates the hours and cost Beacon saves a team against manual tenant review.
- →Comparison page: a side-by-side view of how Beacon stacks up against manual checks and adjacent tooling.
Billing
- →Read-only demo replaces the free trial: prospects explore a pre-loaded environment without a credential, and the time-limited trial has been retired.
- →Card up front at sign-up: paid sign-up now collects a payment method before provisioning, reducing abandoned half-configured accounts.
- →Annual billing by default: the billing selector now defaults to the annual plan, with monthly still available on a single toggle.
Design
- →Emerald visual refresh: a single emerald accent now runs across the compliance portal, admin portal, and marketing site, replacing the previous cyan-on-navy palette.
- →Tinted surfaces and shadows tuned to the new palette, with the accent reserved for primary actions and status.
- →Status page moved onto the shared Outfit and JetBrains Mono type stack for consistency with the rest of the site.
Reliability
- →Expanded health and status reporting so service state is easier to read at a glance.
- →Improved observability across the API and scan worker for faster diagnosis of slow or failed scans.
- →Stability fixes across sign-up, billing, and demo flows.
v1.5.0
June 2026
Solo plan — personal Azure compliance monitoring
Introducing the Solo plan: a lightweight tier for individuals who want to monitor a single
Azure tenant without the overhead of a full MSP organisation. One account, one tenant,
zero team management — sign up, connect your Azure app registration, and land directly on
your tenant's compliance dashboard.
Feature
- →New Solo plan tier — capped at one user and one Azure tenant; enforced at the API layer so upgrades are a plan change, not a rebuild.
- →3-step self-service onboarding — account creation, Azure tenant credentials, and review all in one wizard at
/register/solo.
- →Auto-routing dashboard — solo users land directly on their tenant's compliance detail page; the multi-client list and MSP overview are skipped automatically.
- →Simplified sidebar — Teams, Users, Organisation, and Billing nav items are hidden for solo accounts; compliance settings remain fully accessible.
- →Sign-in page now shows a "Start with the Solo plan" link for first-time visitors monitoring their own tenant.
v1.4.1
June 2026
Security patch — 17 vulnerabilities remediated
A focused security hardening release addressing findings from a full codebase audit. Fixes span
cross-tenant access control, authentication robustness, injection vulnerabilities, and server-side
request forgery vectors. No new user-facing features; all existing behaviour is unchanged.
Security
- →Cross-tenant IDOR fix — client PATCH and DELETE routes now enforce org-scope access checks, matching the guard already present on all read routes.
- →Custom checks org isolation — PATCH and DELETE on custom compliance checks are now scoped to the caller's organisation.
- →TOTP replay protection — each accepted TOTP code's counter step is recorded; replaying a code within the same 90-second window is now rejected.
- →Stripe webhook signature verification — raw body is now correctly captured so all Stripe event signatures can be verified.
- →Open redirect closed — Stripe checkout and portal redirect URLs are now built from the server-configured
ALLOWED_ORIGIN, not the attacker-controlled Origin request header.
- →HTML injection in emails — client names and severity labels in notification emails are now HTML-escaped.
- →SSRF via SMTP host blocked — email notification channels now validate the SMTP hostname against private IP ranges.
- →SAML host-header injection mitigated — ACS URL and SP entity ID now prefer the
APP_BASE_URL environment variable over derived request headers.
- →Session ID type confusion fixed —
getSessionId() now reads exclusively from the HttpOnly cookie; Bearer tokens are no longer silently treated as session IDs.
- →CSS injection in charts hardened — colour values interpolated into chart style blocks are validated against a hex/rgb/hsl allowlist.
- →Rate limiting added to password change and TOTP disable endpoints to prevent brute-force attacks on authenticated sessions.
- →Audit log now records login, logout, password change, TOTP enable/disable, and user create/role/delete events.
- →Stack traces are no longer exposed outside of local development environments.
- →Demo sessions are created with
viewer role instead of admin.
- →Missing
ALLOWED_ORIGIN in production is now a fatal startup error rather than a silent misconfiguration.
v1.4.0
June 2026
Security hardening & deployment improvements
This release focused on eliminating known vulnerabilities in dependencies, tightening the
CI pipeline, and expanding the first-party deployment guide to cover Railway and Vercel as
fully supported targets alongside the existing Azure App Service path.
Security
- →Resolved high- and critical-severity CVEs across the npm dependency tree.
- →Pinned all CI GitHub Action references to commit SHAs to prevent dependency confusion attacks.
Deployment
- →New Railway deployment guide — one-click API and database setup with environment variable templates.
- →Vercel static deployment guide for the compliance portal and marketing site front-ends.
- →Updated Docker Compose configuration for streamlined local development setup.
v1.3.0
May 2026
Admin portal, platform operations & UI refresh
A major platform release adding a fully separate Admin Portal for Beacon operators alongside
a comprehensive visual refresh across all three portals. New support session tooling lets
Beacon staff assist customers directly from the admin interface.
New feature
- →Beacon Admin Portal — a separate application at a distinct URL for Beacon platform operators. Includes org management, support tickets, infrastructure overview, and platform admin user management.
- →Platform Admins page — create and delete Beacon staff admin accounts from a dedicated management screen.
- →Beacon support sessions — split login system enables Beacon operators to open a scoped support session inside a customer's compliance portal without using a customer credential.
Design
- →New Outfit typeface across all three portals for a more modern, readable interface.
- →Desaturated brand colour palette — more neutral base tones with focused accent usage.
- →Comprehensive UI polish pass: card surfaces, spacing, icon sizing, and interactive states.
- →Marketing site redesign matching the new visual language.
Security & stability
- →Security hardening across API endpoints: improved input validation, rate limiting, and session management.
- →Beta readiness improvements: performance optimisations, admin portal UX polish, and stability fixes ahead of general availability.
- →
create-super-admin recovery script added for initial platform setup and emergency admin recovery.
v1.2.0
March 2026
Billing, SaaS multi-tenancy & public launch
The foundational SaaS release. Beacon became a fully multi-tenant platform with a public
marketing site, Stripe billing, a demo mode for prospective customers, and a built-in
support system. Each MSP organisation is completely isolated from all others.
New feature
- →Stripe billing — subscription plan management (Starter, Growth, Pro, Enterprise) with per-client usage tracking and seat limits enforced at the API layer.
- →Organisation isolation — full SaaS multi-tenancy: every MSP organisation is completely isolated in its own data partition. No cross-organisation data access is possible.
- →Demo mode — prospective customers can explore a pre-loaded Beacon environment with 5 sample MSP clients using a demo access code. No sign-up required.
- →Built-in support system — raise and track support tickets directly from within the compliance portal. Tickets route to the Beacon Admin Portal for operator response.
- →Marketing site — public landing page at the root domain with feature overview, security check catalogue, pricing tiers, and demo access.
- →Production Docker stack — a single
docker-compose.yml now orchestrates all six services (API, compliance portal, admin portal, marketing site, background worker, database).
v1.1.0
December 2025
MSP readiness — 36 checks, integrations & reporting
A series of milestone releases transforming Beacon from a proof-of-concept into a
production-ready MSP platform. Check coverage expanded from 15 to 36 controls,
and a complete integration layer was added: SLA tracking, PSA webhooks, API tokens,
scheduled reports, share links, and compliance framework mapping.
Security checks
- →36 built-in security checks — expanded from 15 to cover Identity (6), Infrastructure (9), Data (5), Patching (4), Security (6), Monitoring (4), and Backup (6) categories. All checks run via Microsoft Graph and Azure Resource Manager APIs — no agent required in the client tenant.
- →Custom checks — admins can define additional compliance controls beyond the 36 built-in checks, with configurable name, description, severity, and category.
- →Finding suppression — individual findings can be suppressed with an optional reason and expiry date. Suppressed findings are excluded from open issue counts and do not affect the compliance score.
- →Global suppressions — platform-wide suppression rules apply a suppression to the same check across all clients simultaneously.
Integrations
- →Per-client PSA webhooks — push findings to ConnectWise, HaloPSA, or Freshservice per client. Separate from the global webhook channel configuration.
- →Notification channels — configure named Slack, Microsoft Teams, and email delivery channels. Each channel can subscribe to different event types (scan complete, critical finding, scan failure).
- →API tokens — machine-to-machine tokens for REST API access. Tokens are scoped to an organisation and never expire unless explicitly revoked.
- →Data export — export all compliance findings for a client to CSV or JSON for further analysis or import into a SIEM.
Reporting & compliance
- →Scheduled compliance reports — configure weekly or monthly reports to be emailed automatically to a client contact. Reports include score gauge, open findings table, and category breakdown.
- →Share tokens — generate a read-only share link for a client's compliance report. Share it directly with your customer without giving them a Beacon login.
- →Framework mapping — each of the 36 checks carries CIS Microsoft 365 Benchmark, NIST CSF, and ISO 27001:2022 control IDs. The compliance report includes a framework coverage table with per-framework pass rates.
- →Per-client SLA tracking — configure target remediation times (critical, high, medium, low) per client. Beacon automatically flags SLA breaches and sends alerts via notification channels.
- →90-day score trends — compliance score history and open/critical finding counts charted over a rolling 90-day window. A data point is written after every successful sync.
Security & identity
- →TOTP MFA with QR code — users can now scan a QR code during MFA setup from any TOTP authenticator app (Google Authenticator, Authy, 1Password, Microsoft Authenticator).
- →Finding workflow — findings now move through three states: open → acknowledged → suppressed. Every state change is recorded in the tamper-evident audit log with the acting user and timestamp.
- →HMAC-SHA256 audit chain — all audit log entries are chained with an HMAC hash. Deletion or modification of any historical entry breaks the chain and is mathematically detectable.
- →API rate limiting — per-IP and per-user rate limits on authentication and write endpoints. API key rotation endpoint added for credential hygiene.
v1.0.0
September 2025
Initial release
General availability
The first production release of Beacon. A multi-tenant Azure compliance management platform
for Managed Service Providers with 15 built-in security checks, full RBAC, SAML SSO,
and a tamper-evident audit log.
- →15 built-in security checks covering Identity and Access Management, Network Security Groups, Key Vault, storage accounts, and Defender for Cloud.
- →Multi-tenant RBAC — three-role system (Admin, Engineer, Viewer) with team-based client scoping. Each MSP organisation is fully isolated.
- →Microsoft Graph API integration — agentless compliance data collection. Beacon only requires a read-only App Registration in each managed Azure tenant.
- →Severity-weighted compliance scoring — 0–100 score where failing a critical control has a proportionally larger impact than a low-severity miss.
- →6-hour automatic background scans — no manual intervention required. All tenants are scanned on a fixed schedule with scan concurrency limits to protect Microsoft API quotas.
- →SAML 2.0 SSO — integrate with Microsoft Entra ID or any SAML 2.0 identity provider. Accounts are auto-provisioned on first SSO login.
- →AES-256-GCM encryption at rest — Azure App Registration credentials (client IDs, secrets, certificates) are encrypted before storage.
- →Tamper-evident audit log — all significant actions are recorded in an HMAC-SHA256 chained log. Provides an auditable evidence trail for compliance conversations.
- →Printable compliance report — every client has a print-optimised A4 compliance report accessible at any time from the client detail page.