Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
197 commits
Select commit Hold shift + click to select a range
dc32ef4
docs(setup): add emergency access revocation guide
NickVAg Oct 1, 2026
81cb38c
fix(nav): expand and reveal the current page in the side nav
kris6673 Oct 7, 2026
39eb4ca
fix(intune): include + replace on custom group drops All Users/All De…
kris6673 Oct 9, 2026
15fffcd
fix(CippApiDialog): remove double HTML escaping in confirm text
JohnDuprey Oct 12, 2026
74e7304
fix(quarantine): label unanalysed links and attachments instead of Un…
JohnDuprey Oct 12, 2026
359bd91
fix(standards): only treat a device prep policy as the Device Prep pr…
JohnDuprey Oct 13, 2026
75806c7
fix(baselines): add the Intune Provisioning Client as owner of an exi…
JohnDuprey Oct 13, 2026
8a24026
fix(webhooks): skip already-processed webhook rows and stop overlappi…
Zacgoose Oct 13, 2026
57480a6
fix(standards): pass a single template id to the user agent for merge…
Zacgoose Oct 13, 2026
f31ca0d
fix(auditlog): pause audit searches for 24 hours when the tenant lack…
Zacgoose Oct 13, 2026
7e31968
fix(auditlog): use a generic message for the audit search permission …
Zacgoose Oct 13, 2026
b44f19c
fix(sso): backfill scopes when the SSO app registration has no Graph …
Zacgoose Oct 13, 2026
eba4776
fix(graph): cache admin-fixable token failures for 30 minutes
Zacgoose Oct 13, 2026
62d1a75
fix(auditlog): evaluate audit rules without enrichment when the direc…
Zacgoose Oct 13, 2026
e7fcffa
feat(baselines): add baselines for the remaining classic standards
Zacgoose Oct 13, 2026
5c4fceb
perf(cache): per-tenant cache runs, chained mailbox stages and EXO ra…
Zacgoose Oct 13, 2026
1966ef6
feat(search): include individual integrations in universal page search
Zacgoose Oct 13, 2026
8d6a1ad
Update openapi.json
Zacgoose Oct 13, 2026
b5c46fa
perf(cache): run a single-tenant cache refresh through the same cappe…
Zacgoose Oct 13, 2026
2f151d7
fix(ninjaone): sort secure scores by createdDateTime so the latest sc…
Zacgoose Oct 13, 2026
3f21951
ci: set issue type in Label Issues workflow, replace labeler with git…
kris6673 Oct 13, 2026
1d153bb
Merge pull request #899 from kris6673/ci/label-issues-type
KelvinTegelaar Oct 13, 2026
24e6232
fix(intune): don't refetch templates after deploying a policy
kris6673 Oct 13, 2026
1fa7a68
CA policy reporting
KelvinTegelaar Oct 13, 2026
1554d19
feat(alerts): per-alert option to re-notify while an alert is still a…
Zacgoose Oct 13, 2026
39779d2
Update openapi.json
Zacgoose Oct 13, 2026
a4159dc
perf(sharepoint): project and stream the tenant-wide SPO site enumera…
Zacgoose Oct 13, 2026
4133414
perf(sharepoint): memoise the SharePoint admin link per tenant within…
Zacgoose Oct 13, 2026
2639b0f
feat(intune): add macOS LAPS retrieval
TecharyJames Oct 13, 2026
b68fa80
Merge pull request #903 from TecharyJames/feat/macos-laps-retrieval
KelvinTegelaar Oct 13, 2026
de8e040
feat(sharepoint): send the ISV-decorated CIPP User-Agent, including o…
Zacgoose Oct 13, 2026
3b7f943
fix(sharepoint): send the ISV User-Agent only on SharePoint requests
Zacgoose Oct 13, 2026
b41f0df
feat(ratelimit): share one SharePoint throttle key per tenant across …
Zacgoose Oct 13, 2026
318f9e2
docs: 11.1.0
bmsimp Oct 13, 2026
b4f930b
fix(sam-cert): verify the certificate can sign before enabling certif…
JohnDuprey Oct 13, 2026
efafe69
feat(ratelimit): pace SharePoint per tenant by measured resource-unit…
Zacgoose Oct 13, 2026
05ed36f
fix(graph): retry a 503 by status code in the Graph request helpers
Zacgoose Oct 13, 2026
8d35298
fix(ratelimit): let callers wait out a full 300 s throttle block
Zacgoose Oct 13, 2026
833eb26
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
Zacgoose Oct 13, 2026
c98e876
Update openapi.json
Zacgoose Oct 13, 2026
28d1d34
perf(exo): send Exchange Online requests over HTTP/2
Zacgoose Oct 14, 2026
9bd0e3e
perf(http): request HTTP/2 on every lane that enables it
Zacgoose Oct 14, 2026
638252c
perf(sharepoint): multiplex SharePoint requests over HTTP/2
Zacgoose Oct 14, 2026
315f3ff
chore(docs): refresh published docs page snapshot
github-actions[bot] Oct 14, 2026
0bf1323
docs: add helper function rules to the contributor instructions
Zacgoose Oct 14, 2026
b7571a9
refactor(auditlog): remove the V1 audit log pipeline and legacy cache…
Zacgoose Oct 14, 2026
15223af
perf(auditlog): create audit searches for many tenants in one concurr…
Zacgoose Oct 14, 2026
2b3efed
perf(auditlog): skip records no rule can match and drop the processin…
Zacgoose Oct 14, 2026
2eddf0b
perf(auditlog): run audit log orchestrations at priority 3
Zacgoose Oct 14, 2026
f3b285f
fix(auditlog): skip search creation while a previous creation run is …
Zacgoose Oct 14, 2026
ec697fa
fix(orchestrators): skip timer runs while the previous run is still a…
Zacgoose Oct 14, 2026
3daa2cf
fix(orchestrators): report skipped timer runs as skipped instead of s…
Zacgoose Oct 14, 2026
7af4423
Update openapi.json
Zacgoose Oct 14, 2026
621f0a1
Merge pull request #906 from CyberDrain/chore/docs-published-pages-up…
Zacgoose Oct 14, 2026
2e0c7cd
feat(quarantine): read user reported messages from the unified audit log
kris6673 Oct 14, 2026
b87fbb3
fix(bec): stop marking quiet investigation runs as abandoned
Zacgoose Oct 14, 2026
914afdb
Update openapi.json
Zacgoose Oct 14, 2026
c8c01c6
feat(bec): log each collector and IP analysis step with its duration
Zacgoose Oct 14, 2026
0a7f8b4
fix(frontend): ignored props, doubled page titles, typos
kris6673 Oct 14, 2026
b9b3a58
fix: read tenantFilter from body on spam filter, backup and exclude-t…
kris6673 Oct 14, 2026
bb9bee8
fix(backend): undefined variables and PS7 `?` parsing slips
kris6673 Oct 14, 2026
c70e864
fix(standards): wrong license-check names, copy-pasted log text, seve…
kris6673 Oct 14, 2026
d61cb35
feat(bec): look up the other accounts on the case addresses in a step…
Zacgoose Oct 14, 2026
8cdf695
perf(bec): look up at most 20 case addresses with two unpaged sign-in…
Zacgoose Oct 14, 2026
df6cab6
feat(email): test mail flow rules with Test-Message
JohnDuprey Oct 14, 2026
d08d0e2
fix(msp-apps): set the NinjaOne app setup file path
Zacgoose Oct 14, 2026
ae528d1
fix(branding): save and load report role colours on branding presets
Zacgoose Oct 14, 2026
a2e2eed
fix(dashboard): ignore retired cache types when judging cache freshness
Zacgoose Oct 14, 2026
9b6dfe8
fix(webhooks): create Graph subscriptions on the current instance URL
Zacgoose Oct 14, 2026
5b98c4a
fix(mcp): flag a disabled MCP Server feature during setup
Zacgoose Oct 14, 2026
a796a7e
fix(bec): read sign-in history the sign-in log no longer keeps from t…
Zacgoose Oct 14, 2026
2a8a7ea
fix(bec): sample colleagues from the last 7 days of sign-ins
Zacgoose Oct 14, 2026
15fa68c
chore(deps): bump github/codeql-action from 4.38.2 to 4.38.3
dependabot[bot] Oct 14, 2026
cc94ef7
chore(deps): bump @mui/system from 9.4.0 to 9.5.0 in /frontend
dependabot[bot] Oct 14, 2026
2705a19
chore(deps): bump react-virtuoso from 4.18.7 to 4.18.16 in /frontend
dependabot[bot] Oct 14, 2026
bb2feae
chore(deps): bump stylis from 4.2.0 to 4.4.0 in /frontend
dependabot[bot] Oct 14, 2026
a39007f
chore(deps): bump @tanstack/react-query in /frontend
dependabot[bot] Oct 14, 2026
0f5594e
chore(deps): bump @tiptap/starter-kit from 3.31.3 to 3.31.4 in /frontend
dependabot[bot] Oct 14, 2026
33f470f
more nags classic infrastructure
KelvinTegelaar Oct 14, 2026
a3c74c9
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
KelvinTegelaar Oct 14, 2026
f6489af
feat(logs): add IP/AppId filters, search, quick ranges, URL state
JohnDuprey Oct 14, 2026
3486364
fixes noop baselines
KelvinTegelaar Oct 14, 2026
3a84846
namespace bug
KelvinTegelaar Oct 14, 2026
2e9b6ac
fix(standards): match MOERA DMARC records regardless of spacing and t…
Zacgoose Oct 14, 2026
b10376b
perf(bec): read the user's sign-ins and baseline in 7-day slices
Zacgoose Oct 14, 2026
677dfe8
fix(intune): find nested settings catalog settings and add them throu…
Zacgoose Oct 14, 2026
588d781
fix(intune): pass the picked nested setting through the settings card
Zacgoose Oct 14, 2026
9c84191
Update openapi.json
Zacgoose Oct 14, 2026
1da22b2
fix(intune): check templates against real tenant policies and fix wha…
Zacgoose Oct 14, 2026
6643737
fix(intune): refuse templates missing a setting their chosen option r…
Zacgoose Oct 14, 2026
c600c10
perf(graph): pace the identity reports at 5 requests per 10 seconds p…
Zacgoose Oct 14, 2026
dc5e1a6
fix(exo): keep mailboxes from batches that fail as a whole
Zacgoose Oct 14, 2026
c3deca0
test(sharepoint): load CIPPSharp in the sharing-links scan tests
Zacgoose Oct 14, 2026
d4e1562
perf(sharepoint): scan at most two drives at a time per tenant
Zacgoose Oct 14, 2026
7f68638
perf(exo): read calendar permissions 16 batches at a time
Zacgoose Oct 14, 2026
f605b2e
perf(sharepoint): charge permission reads the documented 5 resource u…
Zacgoose Oct 14, 2026
0daaf3f
chore(docs): refresh published docs page snapshot
github-actions[bot] Oct 15, 2026
0cbec4e
Merge pull request #931 from CyberDrain/chore/docs-published-pages-up…
Zacgoose Oct 15, 2026
917f3f8
fix(jit): deep-link approval notifications to the requesting tenant
TecharyJames Oct 15, 2026
eaae067
docs(standards): rewrite Planner task-delete standard text for end users
kris6673 Oct 15, 2026
34d9a6e
perf(sharepoint): read sharing-link deltas with hierarchical sharing
Zacgoose Oct 15, 2026
ebc1203
perf(sharepoint): redrive unfinished sharing-link drives from post-ex…
Zacgoose Oct 15, 2026
9a850b4
feat(sharepoint): keep sharing links in their own table with delta-on…
Zacgoose Oct 15, 2026
65f80c2
perf(tests): project Users fields in security simulations and reuse r…
Zacgoose Oct 15, 2026
94e6261
feat(sharepoint): redrive sharing-link scans while they progress and …
Zacgoose Oct 15, 2026
1281634
fix(spo): parse localized SharePoint admin numeric values
MartinRain Oct 15, 2026
4c6e8bb
fix(spo): normalize storage quotas safely in byte units
MartinRain Oct 15, 2026
6cd0309
test(spo): cover live numeric formats and quota fallback
MartinRain Oct 15, 2026
f2763d5
Merge pull request #933 from kris6673/fix/planner-standard-help-text
KelvinTegelaar Oct 15, 2026
094b865
Merge pull request #932 from TecharyJames/fix(jit)-deep-link-approval…
KelvinTegelaar Oct 15, 2026
e29ad37
Merge pull request #914 from kris6673/fix/backend-undefined-vars
KelvinTegelaar Oct 15, 2026
8e8659d
Merge pull request #920 from CyberDrain/dependabot/github_actions/dev…
KelvinTegelaar Oct 15, 2026
bf6b7b1
new baseline
KelvinTegelaar Oct 15, 2026
aeb833e
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
KelvinTegelaar Oct 15, 2026
d790368
Merge pull request #923 from CyberDrain/dependabot/npm_and_yarn/front…
KelvinTegelaar Oct 15, 2026
9be08ee
Merge pull request #915 from kris6673/fix/standards-copy-paste
KelvinTegelaar Oct 15, 2026
005416d
Merge pull request #800 from NickVAg/docs/IRP-scenarios
KelvinTegelaar Oct 15, 2026
fedad34
Merge pull request #850 from kris6673/fix/sidenav-follow-route
KelvinTegelaar Oct 15, 2026
dae3d1c
Merge pull request #867 from kris6673/fix/intune-include-replace-broa…
KelvinTegelaar Oct 15, 2026
7d08a9d
Merge pull request #902 from kris6673/fix/policy-deploy-template-refetch
KelvinTegelaar Oct 15, 2026
f12138c
Merge pull request #908 from kris6673/fix/user-reported-admin-submiss…
KelvinTegelaar Oct 15, 2026
a18b17c
Merge pull request #912 from kris6673/fix/frontend-ui-slips
KelvinTegelaar Oct 15, 2026
6330ac4
Merge pull request #913 from kris6673/fix/tenantfilter-body-fallback
KelvinTegelaar Oct 15, 2026
c930ef0
Merge pull request #921 from CyberDrain/dependabot/npm_and_yarn/front…
KelvinTegelaar Oct 15, 2026
e4cdc69
Merge pull request #922 from CyberDrain/dependabot/npm_and_yarn/front…
KelvinTegelaar Oct 15, 2026
1c5b0e1
Merge pull request #924 from CyberDrain/dependabot/npm_and_yarn/front…
KelvinTegelaar Oct 15, 2026
20fbb42
Merge pull request #925 from CyberDrain/dependabot/npm_and_yarn/front…
KelvinTegelaar Oct 15, 2026
0c82cb6
Merge pull request #937 from MartinRain/fix/spo-localized-site-usage
KelvinTegelaar Oct 15, 2026
521bbc5
Update openapi.json
Zacgoose Oct 15, 2026
421c80c
perf(cache): stable keys for Teams activity and role policies, cap Ni…
Zacgoose Oct 15, 2026
50a6eb2
perf(ninjaone): read only the cache fields the tenant sync uses
Zacgoose Oct 15, 2026
06012c0
docs(setup): clarify Single Tenant Mode scope and direct tenants
bmsimp Oct 15, 2026
e32a89b
perf(tests): stream user plans and group members instead of caching them
Zacgoose Oct 15, 2026
cfb5fef
fix(gdap): validate role templates before creating invites
Zacgoose Oct 15, 2026
bc7608a
fix(tests): count Global Administrator group members in ZTNA21816
Zacgoose Oct 15, 2026
226a4e2
feat(sharepoint): keep permissions and storage scans in their own tables
Zacgoose Oct 15, 2026
f659811
feat(sharepoint): show last refresh times on the storage report
Zacgoose Oct 15, 2026
41e7447
perf(ninjaone): stream user plans and group members in the tenant sync
Zacgoose Oct 15, 2026
3f7c04a
fix(sharepoint): match the storage report's last refresh line to the …
Zacgoose Oct 15, 2026
30a55ae
docs(teams-share): move report pages under Reports to match the app
Zacgoose Oct 15, 2026
ae0bb5b
feat(sharepoint): dedicated sync endpoints for the SharePoint reports
Zacgoose Oct 15, 2026
12d5072
Update openapi.json
Zacgoose Oct 15, 2026
66e56f6
perf(dbcache): delete orphaned cache rows in batches without per-row …
Zacgoose Oct 15, 2026
9cd56f9
perf(ninjaone): cheaper plan-date filter and HTML card helpers in the…
Zacgoose Oct 15, 2026
8d52ee1
perf(sharepoint): run the site caches as their own tasks and fan out …
Zacgoose Oct 15, 2026
c3548e4
add zar and source
KelvinTegelaar Oct 15, 2026
4c0988d
chore(docs): refresh published docs page snapshot
github-actions[bot] Oct 16, 2026
f2b2d49
perf(ninjaone): log user document send reasons and write 8 batches at…
Zacgoose Oct 16, 2026
fe72041
Merge pull request #943 from CyberDrain/chore/docs-published-pages-up…
Zacgoose Oct 16, 2026
022ef2c
fix(forms): clear hidden CippFormCondition fields in production builds
kris6673 Oct 16, 2026
c588431
Merge pull request #947 from kris6673/fix/form-condition-clear-on-hide
KelvinTegelaar Oct 16, 2026
addb21f
test: fix order-dependent token cache and Warning severity assertions
Zacgoose Oct 16, 2026
20379a0
refresh fix
KelvinTegelaar Oct 16, 2026
d576eef
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
KelvinTegelaar Oct 16, 2026
e4f9b42
fix permissions
KelvinTegelaar Oct 16, 2026
e390e1d
fixes conditionals.
KelvinTegelaar Oct 16, 2026
8da9588
add guid
KelvinTegelaar Oct 16, 2026
e96070e
perf(ninjaone): round user summary stats and read only user document ids
Zacgoose Oct 16, 2026
0b7d089
perf(ninjaone): read users and groups once and show dates without times
Zacgoose Oct 16, 2026
62e74ac
docs: Replace "What to do after installation?" Storylane with v2
bmsimp Oct 16, 2026
c2fd97f
fixes repeating alerts
KelvinTegelaar Oct 16, 2026
bf0c003
Merge branch 'dev' of https://github.com/CyberDrain/CIPP into dev
KelvinTegelaar Oct 16, 2026
958e9ea
perf(ninjaone): multiplex NinjaOne requests over HTTP/2
Zacgoose Oct 16, 2026
474c4c9
fix(ninjaone): keep each date's format and drop only its time
Zacgoose Oct 16, 2026
72999ae
fix(scheduler): preserve recurring task slots
Zacgoose Oct 16, 2026
9cddfa8
perf(ninjaone): fan large user document syncs out in staged chunks
Zacgoose Oct 16, 2026
5670280
fix(api-clients): never manage the SSO or SAM app as an API client
Zacgoose Oct 16, 2026
17cb71a
fix(timezone): only warn when the scheduler rejects a timezone update
Zacgoose Oct 16, 2026
3d71987
fix(alerts): give alert items a stable identity so they notify once
JohnDuprey Oct 16, 2026
373f5e6
fix(alerts): skip auto-expanding archives in the archive quota alert
JohnDuprey Oct 16, 2026
a99039d
fix(baselines): resolve CA user and group ids the caches do not hold yet
JohnDuprey Oct 16, 2026
8158983
fix: use full generic type names and guard against short ones
JohnDuprey Oct 16, 2026
95b2bac
docs(mcp): warn self-hosted users to migrate before using the MCP
bmsimp Oct 16, 2026
927288a
fix(mailbox-cache): keep the previous cache when a batch fails
Zacgoose Oct 16, 2026
5e66144
fix(intune): tell same-named settings apart in the catalog picker
Zacgoose Oct 16, 2026
b070a1d
Update alerts.json
Zacgoose Oct 16, 2026
0f77d8d
fix(graph): serve paged AllTenants cache blobs in plan order
Zacgoose Oct 16, 2026
0571225
fix(bec): scope BEC report runs to the caller's allowed tenants
Zacgoose Oct 16, 2026
d1a068f
feat(reports): page AllTenants cached report reads
Zacgoose Oct 16, 2026
73daa90
Update openapi.json
Zacgoose Oct 16, 2026
c17c9d3
feat(auditlog): add app- and user-actor presets for high-risk app cha…
rvdwegen Oct 17, 2026
9f5f17e
chore(config): expand RiskyPermissions and VendorTenantList catalogs
rvdwegen Oct 17, 2026
acc0abf
feat(build): speed up the dev azurite table service
Zacgoose Oct 17, 2026
254843a
feat(credentials): manage CIPP-SAM and CIPP-SSO credentials from one tab
JohnDuprey Oct 17, 2026
7c91776
fix: clear token cache after credential change
JohnDuprey Oct 17, 2026
72c6d18
fix(sam): keep cert auth on for propagating existing secret
JohnDuprey Oct 17, 2026
9c214c3
fix(credentials): say secret activation can take 10 to 15 minutes
JohnDuprey Oct 17, 2026
5f957ee
fix(credentials): spin the refresh icon while status reloads
JohnDuprey Oct 17, 2026
79ae704
chore: bump version to 11.1.1
JohnDuprey Oct 17, 2026
aae5b4d
fix(graph): keep AllTenants queue tasks alive on empty or failed tenants
Zacgoose Oct 17, 2026
8517b50
perf(reports): read AllTenants search and service health one tenant a…
Zacgoose Oct 17, 2026
d24e0b8
fix(auditlog): match credentials added when an app registration is cr…
Zacgoose Oct 17, 2026
39101c7
docs: add credentials page documentation
JohnDuprey Oct 17, 2026
7327ef8
test(scheduler): load the next-run helper in the delta trigger tests
Zacgoose Oct 17, 2026
6a529f3
test(bec): derive the catalog merge expectations from RiskyPermission…
Zacgoose Oct 17, 2026
fe3ce24
test(scheduler): expect a stale delta task to keep its original slot
Zacgoose Oct 17, 2026
dba32c2
chore: bump version to 11.2.0
JohnDuprey Oct 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,14 @@ churn; these patterns do.
members: once anything has enumerated `Properties`, the reserved `pstypenames` sits among the instance members).
- A Pester test whose code under test uses a `[CIPP.*]` type must `Add-Type` `Shared/CIPPSharp/bin/CIPPSharp.dll` in
`BeforeAll`; helpers that fall back when the type is missing otherwise pass while testing the wrong path.

## Helper functions

Every function is one more place a contributor has to look, so a new one has to earn its place.

- Write logic that has one caller inline where it is used. Add a function only when it has two or more real callers, or
it is a generic building block like the Graph, Exchange, table and tenant helpers in `CIPPCore/Public/GraphHelper`.
- Don't wrap a single call to an existing function (a new function whose body is one `Start-CIPPOrchestrator` call):
call the existing function directly.
- Don't declare functions inside functions. Put the branch inline, or compute the input first and classify it once.
- Search for an existing helper before writing one, and extend it rather than adding a near-copy.
6 changes: 3 additions & 3 deletions .github/workflows/CodeQL_Analyser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Initialize CodeQL
uses: github/codeql-action/init@v4.38.2
uses: github/codeql-action/init@v4.38.3
with:
languages: ${{ matrix.language }}
queries: security-extended
config-file: ./.github/codeql/codeql-config.yml
- name: Autobuild
uses: github/codeql-action/autobuild@v4.38.2
uses: github/codeql-action/autobuild@v4.38.3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.38.2
uses: github/codeql-action/analyze@v4.38.3
14 changes: 10 additions & 4 deletions .github/workflows/Label_Issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,22 @@ jobs:
issues: write
steps:
- name: Label Issues
uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
add-labels: "bug"
script: |
const issue = { ...context.repo, issue_number: context.issue.number }
await github.rest.issues.addLabels({ ...issue, labels: ['bug'] })
await github.rest.issues.update({ ...issue, type: 'Bug' })
label_issues_frs:
if: github.repository_owner == 'CyberDrain' && contains(github.event.issue.title, 'Feature')
runs-on: ubuntu-slim
permissions:
issues: write
steps:
- name: Label Issues
uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
add-labels: "Feature, no-priority"
script: |
const issue = { ...context.repo, issue_number: context.issue.number }
await github.rest.issues.addLabels({ ...issue, labels: ['Feature', 'no-priority'] })
await github.rest.issues.update({ ...issue, type: 'Feature' })
3 changes: 2 additions & 1 deletion backend/AddMSPApp/ninja.app.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,6 @@
"v10_1607": true
},
"notes": "CIPP Uploaded application",
"minimumMemoryInMB": 1
"minimumMemoryInMB": 1,
"setupFilePath": "install.ps1"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"name": "DisableAgentBlueprintCreation",
"label": "Disable agent identity blueprint creation by users",
"cat": "Entra (AAD) Standards",
"tag": [],
"impact": "Low Impact",
"helpText": "Disables the ability for users to register agent identity blueprints in the tenant. This is a separate setting from 'Users can register applications'; disabling app registrations does not stop users from creating agent identity blueprints.",
"executiveText": "Prevents regular employees from creating AI agent identity blueprints, which are the templates that agent identities are issued from. Restricting this to designated roles keeps agent identities and their credentials under IT governance and avoids a sprawl of unmanaged agent registrations.",
"docsDescription": "Sets the Entra default user role permission 'Users can register agent identity blueprints' (defaultUserRolePermissions.allowedToCreateAgentIdentityBlueprints on the Graph beta authorization policy) to No. Microsoft enables this for all users by default, and the creator of a blueprint becomes its owner and can manage its credentials. This setting is independent of 'Users can register applications', so apply both standards to keep application and agent identity creation limited to the Agent ID Developer and Agent ID Administrator roles.",
"impactColour": "info",
"addedDate": "2026-10-15",
"powershellEquivalent": "Update-MgBetaPolicyAuthorizationPolicy -DefaultUserRolePermissions @{ allowedToCreateAgentIdentityBlueprints = $false }",
"appliesToTest": [],
"recommendedBy": ["CIPP"],
"requiredCapabilities": [],
"secureScoreImpact": 0,
"compare": "subset",
"variables": {
"allowAgentBlueprintCreation": {
"type": "switch",
"label": "Allow users to register agent identity blueprints",
"default": false,
"recommended": false
}
},
"expected": {
"allowedToCreateAgentIdentityBlueprints": "%allowAgentBlueprintCreation%"
},
"read": {
"cacheType": "AuthorizationPolicy",
"object": "defaultUserRolePermissions"
},
"writeTarget": "authorizationPolicy",
"writeTargetProperties": {
"defaultUserRolePermissions.allowedToCreateAgentIdentityBlueprints": "%allowAgentBlueprintCreation%"
},
"remediate": {
"executor": "GraphRequest",
"requests": [
{
"method": "PATCH",
"asApp": false,
"uri": "policies/authorizationPolicy/authorizationPolicy",
"body": {
"defaultUserRolePermissions": {
"allowedToCreateAgentIdentityBlueprints": "%allowAgentBlueprintCreation%"
}
}
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
{
"name": "MessageEncryption",
"label": "Enable Purview Message Encryption",
"cat": "Exchange Standards",
"tag": [],
"impact": "Low Impact",
"helpText": "Enables Microsoft Purview Message Encryption by turning on Azure RMS licensing for Exchange Online, and turns on simplified client access so the Encrypt button appears in Outlook on the web and the new Outlook. The optional settings default to \"Do not change\", which leaves the tenant's current value alone and out of the drift check. Branding is configured in the Set Encrypted Message Branding (OME) standard.",
"executiveText": "Turns on the built-in encryption that lets staff send protected email to anyone, including recipients outside the organization. Uses licensing the organization already owns, removing the need for a separate secure-email product.",
"docsDescription": "Grades AzureRMSLicensingEnabled and SimplifiedClientAccessEnabled as true, plus EnablePdfEncryption, DecryptAttachmentForEncryptOnly, SimplifiedClientAccessDoNotForwardDisabled, SimplifiedClientAccessEncryptOnlyDisabled and TransportDecryptionSetting when the baseline picks a value. Remediation sends the graded values in one Set-IRMConfiguration call.",
"impactColour": "info",
"addedDate": "2026-08-04",
"powershellEquivalent": "Set-IRMConfiguration -AzureRMSLicensingEnabled $true -SimplifiedClientAccessEnabled $true",
"recommendedBy": [],
"requiredCapabilities": [
"EXCHANGE_S_STANDARD",
"EXCHANGE_S_ENTERPRISE",
"EXCHANGE_S_STANDARD_GOV",
"EXCHANGE_S_ENTERPRISE_GOV",
"EXCHANGE_LITE"
],
"disabledFeatures": {
"report": false,
"warn": false,
"remediate": false
},
"secureScoreImpact": 0,
"compare": "subset",
"variables": {
"EnablePdfEncryption": {
"type": "autoComplete",
"multiple": false,
"creatable": false,
"label": "Encrypt PDF attachments",
"helperText": "Applies Encrypt-only and Do Not Forward protection to PDF attachments as well as the message body.",
"omitWhenBlank": true,
"options": [
{
"label": "Do not change",
"value": ""
},
{
"label": "Enable",
"value": true
},
{
"label": "Disable",
"value": false
}
],
"default": ""
},
"DecryptAttachmentForEncryptOnly": {
"type": "autoComplete",
"multiple": false,
"creatable": false,
"label": "Let recipients save Encrypt-only attachments unprotected",
"helperText": "When enabled, attachments on Encrypt-only mail are decrypted when the recipient downloads them.",
"omitWhenBlank": true,
"options": [
{
"label": "Do not change",
"value": ""
},
{
"label": "Enable",
"value": true
},
{
"label": "Disable",
"value": false
}
],
"default": ""
},
"SimplifiedClientAccessDoNotForwardDisabled": {
"type": "autoComplete",
"multiple": false,
"creatable": false,
"label": "Do Not Forward option in the Outlook Encrypt menu",
"omitWhenBlank": true,
"options": [
{
"label": "Do not change",
"value": ""
},
{
"label": "Hide",
"value": true
},
{
"label": "Show",
"value": false
}
],
"default": ""
},
"SimplifiedClientAccessEncryptOnlyDisabled": {
"type": "autoComplete",
"multiple": false,
"creatable": false,
"label": "Encrypt-only option in the Outlook Encrypt menu",
"omitWhenBlank": true,
"options": [
{
"label": "Do not change",
"value": ""
},
{
"label": "Hide",
"value": true
},
{
"label": "Show",
"value": false
}
],
"default": ""
},
"TransportDecryptionSetting": {
"type": "autoComplete",
"multiple": false,
"creatable": false,
"label": "Transport decryption",
"helperText": "Disabled leaves protected mail encrypted in transit, Optional decrypts it where possible and delivers either way, Mandatory rejects mail it cannot decrypt.",
"omitWhenBlank": true,
"options": [
{
"label": "Do not change",
"value": ""
},
{
"label": "Disabled",
"value": "Disabled"
},
{
"label": "Optional",
"value": "Optional"
},
{
"label": "Mandatory",
"value": "Mandatory"
}
],
"default": ""
}
},
"expected": {
"AzureRMSLicensingEnabled": true,
"SimplifiedClientAccessEnabled": true,
"EnablePdfEncryption": "%EnablePdfEncryption%",
"DecryptAttachmentForEncryptOnly": "%DecryptAttachmentForEncryptOnly%",
"SimplifiedClientAccessDoNotForwardDisabled": "%SimplifiedClientAccessDoNotForwardDisabled%",
"SimplifiedClientAccessEncryptOnlyDisabled": "%SimplifiedClientAccessEncryptOnlyDisabled%",
"TransportDecryptionSetting": "%TransportDecryptionSetting%"
},
"read": {
"cacheType": "ExoIRMConfiguration"
},
"remediate": {
"executor": "ExoRequest",
"cmdlets": [
{
"cmdlet": "Set-IRMConfiguration",
"params": {
"AzureRMSLicensingEnabled": true,
"SimplifiedClientAccessEnabled": true,
"EnablePdfEncryption": "%EnablePdfEncryption%",
"DecryptAttachmentForEncryptOnly": "%DecryptAttachmentForEncryptOnly%",
"SimplifiedClientAccessDoNotForwardDisabled": "%SimplifiedClientAccessDoNotForwardDisabled%",
"SimplifiedClientAccessEncryptOnlyDisabled": "%SimplifiedClientAccessEncryptOnlyDisabled%",
"TransportDecryptionSetting": "%TransportDecryptionSetting%"
}
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
{
"name": "SetDefaultMailboxFont",
"label": "Set default mailbox font, size and colour",
"cat": "Exchange Standards",
"tag": [],
"impact": "Low Impact",
"helpText": "Sets the default compose font name, size and colour for all user and shared mailboxes. Font size is the 1-7 scale Exchange stores, not a point size. Applies to Outlook on the web and new Outlook only - classic Outlook for Windows/Mac uses its own local font settings and is not affected.",
"executiveText": "Applies a consistent default font, size and colour to outgoing email so that messages from across the organisation look uniform and on-brand. This affects the web and new Outlook clients; users can still change the font on an individual message.",
"docsDescription": "Loops through all UserMailbox and SharedMailbox recipients and sets the Outlook on the web default compose font using `Set-MailboxMessageConfiguration`. The font is read from the MailboxMessageConfiguration cache, refreshed when older than 3 hours, and mailboxes already matching the configured font are skipped, so steady-state runs make no writes. Mailboxes whose message configuration cannot be read are reported as drift. Font size is the integer 1-7 scale Exchange stores rather than a point size: 3 is the Exchange default and corresponds to 12pt. Note that these settings apply to Outlook on the web and the new Outlook client only; classic Outlook for Windows and Mac read their compose font from local client settings. See [Microsoft's documentation.](https://learn.microsoft.com/powershell/module/exchangepowershell/set-mailboxmessageconfiguration)",
"impactColour": "info",
"addedDate": "2026-08-04",
"powershellEquivalent": "Set-MailboxMessageConfiguration -DefaultFontName -DefaultFontSize -DefaultFontColor",
"recommendedBy": [],
"requiredCapabilities": [
"EXCHANGE_S_STANDARD",
"EXCHANGE_S_ENTERPRISE",
"EXCHANGE_S_STANDARD_GOV",
"EXCHANGE_S_ENTERPRISE_GOV",
"EXCHANGE_LITE"
],
"secureScoreImpact": 0,
"compare": "subset",
"variables": {
"DefaultFontName": {
"type": "autoComplete",
"multiple": false,
"creatable": true,
"required": true,
"label": "Default font name",
"helperText": "Font applied to new messages. You can type a font that is not in this list.",
"options": [
{ "label": "Aptos", "value": "Aptos" },
{ "label": "Arial", "value": "Arial" },
{ "label": "Calibri", "value": "Calibri" },
{ "label": "Cambria", "value": "Cambria" },
{ "label": "Georgia", "value": "Georgia" },
{ "label": "Helvetica", "value": "Helvetica" },
{ "label": "Segoe UI", "value": "Segoe UI" },
{ "label": "Tahoma", "value": "Tahoma" },
{ "label": "Times New Roman", "value": "Times New Roman" },
{ "label": "Trebuchet MS", "value": "Trebuchet MS" },
{ "label": "Verdana", "value": "Verdana" }
]
},
"DefaultFontSize": {
"type": "number",
"required": true,
"label": "Default font size (1-7)",
"default": 3,
"helperText": "Exchange stores a 1-7 size scale, not a point size. 3 is the Exchange default and corresponds to 12pt; lower is smaller, higher is larger.",
"validators": {
"min": { "value": 1, "message": "Minimum value is 1" },
"max": { "value": 7, "message": "Maximum value is 7" }
}
},
"DefaultFontColor": {
"type": "textField",
"required": true,
"label": "Default font colour",
"placeholder": "#000000",
"helperText": "Six-digit hex colour in the #xxxxxx format, for example #000000. Exchange stores six digits, so shorthand such as #000 is not accepted.",
"validators": {
"pattern": {
"value": "^#[0-9A-Fa-f]{6}$",
"message": "Must be a six-digit hex colour such as #000000"
}
}
}
},
"expected": {
"offenders": [],
"unreadable": []
},
"read": {
"cacheType": "MailboxMessageConfiguration",
"requiredCaches": ["MailboxMessageConfiguration"]
},
"prepare": "Get-CIPPBaselineSetDefaultMailboxFontState",
"remediate": {
"executor": "ExoBulkSweep",
"writes": [
{
"cmdlet": "Set-MailboxMessageConfiguration",
"params": {
"Identity": "%id%",
"DefaultFontName": "%DefaultFontName%",
"DefaultFontSize": "%DefaultFontSize%",
"DefaultFontColor": "%DefaultFontColor%"
}
}
]
}
}
Loading
Loading