Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1012 commits
Select commit Hold shift + click to select a range
c9d2940
Fix typo in log message in Push-ExecCIPPDBCache.ps1
JohnDuprey Jan 16, 2026
f6f26d5
Update default version to 10.0.0
JohnDuprey Jan 16, 2026
2f19fe5
minor prerelease change
KelvinTegelaar Jan 16, 2026
6cc72db
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Jan 16, 2026
47b5958
Merge pull request #1772 from KelvinTegelaar/dev
KelvinTegelaar Jan 16, 2026
72050d3
feat: add auto enable archive mailbox standard
kris6673 Jan 16, 2026
c5eeab1
Change log message severity from Info to Debug
JohnDuprey Jan 16, 2026
6d85886
Filter MFADevices to exclude password auth methods
JohnDuprey Jan 16, 2026
869e768
Update default and latest version to 10.0.1
JohnDuprey Jan 16, 2026
d76bdea
Merge pull request #1774 from KelvinTegelaar/dev
JohnDuprey Jan 16, 2026
0791a3e
Merge pull request #1773 from kris6673/issue5198
KelvinTegelaar Jan 16, 2026
7d4f249
fix typo
JohnDuprey Jan 17, 2026
5d3c362
Add or update the Azure App Service build and deployment workflow config
KelvinTegelaar Jan 17, 2026
fb5ca9a
Merge branch 'KelvinTegelaar:master' into master
criani Jan 17, 2026
dd32e67
Delete .github/workflows/master_cippjiuus.yml
criani Jan 17, 2026
d9c60c7
Update Invoke-ListMFAUsers.ps1
criani Jan 18, 2026
79e523e
Update Get-CIPPMFAState.ps1
criani Jan 18, 2026
ff01a49
Delete .github/workflows/master_prospectorcipp62evl.yml
criani Jan 18, 2026
d96bb4a
Update Invoke-CIPPStandardPhishProtection.ps1
criani Jan 18, 2026
f97cb87
Merge pull request #1778 from criani/dev
KelvinTegelaar Jan 18, 2026
8634610
Create Get-CIPPAlertSecureScore.ps1
Zacgoose Jan 19, 2026
65c48fc
Filter tenants using Get-Tenants in report scripts
JohnDuprey Jan 19, 2026
276c049
Merge pull request #1779 from Zacgoose/securescore-alert
KelvinTegelaar Jan 19, 2026
682bda5
Nullify Package and SHA only if present in template
JohnDuprey Jan 20, 2026
7bc5a5e
sort names
JohnDuprey Jan 20, 2026
c5b167f
Improve filtering logic for count rows in Get-CIPPDbItem
JohnDuprey Jan 20, 2026
70f86d2
Add calendar permissions batch processing and storage
JohnDuprey Jan 20, 2026
c9c7320
Refactor cache data collection to dynamic orchestration
JohnDuprey Jan 20, 2026
8f75c4d
remove log
JohnDuprey Jan 20, 2026
5baa5d1
fixes compares for some results
KelvinTegelaar Jan 20, 2026
c407c9d
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Jan 20, 2026
a8a7b6f
arr fix
KelvinTegelaar Jan 20, 2026
efe1c1a
arr fix
KelvinTegelaar Jan 20, 2026
3f91512
control update
KelvinTegelaar Jan 20, 2026
4a2a9fc
fix reporting
KelvinTegelaar Jan 20, 2026
e9a3a63
fixes reporting
KelvinTegelaar Jan 20, 2026
493cb38
fixes reporting
KelvinTegelaar Jan 20, 2026
3b5927f
improve CA handling.
KelvinTegelaar Jan 20, 2026
978075a
Fixes CA compare
KelvinTegelaar Jan 20, 2026
4314e73
Add 'On' mode to Set-CIPPAssignedPolicy
JohnDuprey Jan 20, 2026
1aa1df2
Add DateFilter support and output to log listing
JohnDuprey Jan 20, 2026
98a3ceb
CA compares
KelvinTegelaar Jan 20, 2026
1b1ff42
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Jan 20, 2026
191e269
Deprecate Sync-CippExtensionData and update cleanup rules
JohnDuprey Jan 20, 2026
7d59134
Improve error handling in report endpoints
JohnDuprey Jan 20, 2026
7f88c32
Add calendar permission report retrieval
JohnDuprey Jan 20, 2026
9f77cf5
fix: update tenant data check to fix unhandled exception
kris6673 Jan 20, 2026
2adc33f
Include OpenIdConfig in external tenant info response
JohnDuprey Jan 20, 2026
1bcce83
fix mx alert so that cache data is stored before trace is written.
KelvinTegelaar Jan 20, 2026
8a6a648
feat: dedupe licenses and add in new ones
kris6673 Jan 20, 2026
06ce65a
feat: initialize excluded licenses from config
kris6673 Jan 20, 2026
b768b5e
feat: refactor license exclusion management
kris6673 Jan 20, 2026
af03ef5
Fixes list groups
KelvinTegelaar Jan 20, 2026
942e7ed
Skip members without GroupId in tenant group scripts
JohnDuprey Jan 21, 2026
25e10ef
Add licenseProcessingState to group select fields
JohnDuprey Jan 21, 2026
89e3746
perform tenant data collection in sequence
JohnDuprey Jan 21, 2026
86cdd9d
Add function to reprocess user license assignments
JohnDuprey Jan 21, 2026
05a48af
Merge pull request #1781 from kris6673/excluded--SKUs
KelvinTegelaar Jan 21, 2026
2ad2b4d
Merge pull request #1780 from kris6673/fix-assesments-not-updating
KelvinTegelaar Jan 21, 2026
a0af36e
expansion fix
KelvinTegelaar Jan 21, 2026
3292b86
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Jan 21, 2026
1b1ca42
Improve MFA user data handling and error logging
JohnDuprey Jan 21, 2026
defe3b9
bump version to 10.0.3
JohnDuprey Jan 21, 2026
80bd036
Merge pull request #1783 from KelvinTegelaar/dev
JohnDuprey Jan 21, 2026
2063a86
Switch to GitHub API for release notes generation
JohnDuprey Jan 21, 2026
d2d5469
standards fixes
JohnDuprey Jan 21, 2026
7fa131a
fix permissions for limited tenant lists
JohnDuprey Jan 21, 2026
9e8702c
Add direct role assignments to Get-CippDbRoleMembers
JohnDuprey Jan 21, 2026
69e9e6f
Fix parameter naming inconsistencies in test scripts
JohnDuprey Jan 21, 2026
5a97b56
Refactor mailbox CAS retrieval
JohnDuprey Jan 21, 2026
54bf53c
Improve memory efficiency for large dataset processing
JohnDuprey Jan 21, 2026
9969b9f
feat(named-locations): support removing multiple IPs and locations
kris6673 Jan 21, 2026
16a6a11
feat(named-locations): support removing multiple IPs and locations
kris6673 Jan 21, 2026
2cd5043
Merge branch 'named-locations' of https://github.com/kris6673/CIPP-AP…
kris6673 Jan 21, 2026
4d5387a
Improve batch processing and error logging in CIPP modules
JohnDuprey Jan 21, 2026
b03a0b9
Lower max batch size to 500 in Add-CIPPDbItem
JohnDuprey Jan 21, 2026
f8670f8
Improve memory management in user and batch processing
JohnDuprey Jan 21, 2026
48875ba
Revert "Improve memory management in user and batch processing"
JohnDuprey Jan 21, 2026
99c2ff4
data collection sequence change
KelvinTegelaar Jan 22, 2026
96ffe06
update null saftey so it does not generate error when loading data
KelvinTegelaar Jan 22, 2026
19ea1a3
fixes array compare
KelvinTegelaar Jan 22, 2026
8cb6051
member troubleshooting for groups
KelvinTegelaar Jan 22, 2026
932f43a
fix compares
KelvinTegelaar Jan 22, 2026
71b0a18
compares
KelvinTegelaar Jan 22, 2026
b624a7b
up version
KelvinTegelaar Jan 22, 2026
c110582
Merge pull request #1785 from KelvinTegelaar/dev
KelvinTegelaar Jan 22, 2026
17c92d6
managed device cache
KelvinTegelaar Jan 22, 2026
2ddf931
Pushy-cippTest
KelvinTegelaar Jan 22, 2026
e01d6af
rerun protection
KelvinTegelaar Jan 22, 2026
6bc3245
eleviation
KelvinTegelaar Jan 22, 2026
03ef8e6
Fix for db rerun
KelvinTegelaar Jan 22, 2026
8f2fc70
v up
KelvinTegelaar Jan 22, 2026
a41c494
Merge pull request #1786 from KelvinTegelaar/dev
KelvinTegelaar Jan 22, 2026
96db476
roll back memory exception testing
JohnDuprey Jan 22, 2026
67df08f
Optimize service principal and permission grants with bulk requests
JohnDuprey Jan 22, 2026
5b9007c
Improve logging and response structure in core modules
JohnDuprey Jan 22, 2026
c17f29e
chore: sync product names in ExcludeSkuList.JSON
kris6673 Jan 22, 2026
dc6c7e7
Make version better available on azure function app interaction
Jan 23, 2026
22f6c8e
Merge pull request #1784 from kris6673/named-locations
KelvinTegelaar Jan 23, 2026
3929058
Merge pull request #1789 from kris6673/exclude-list
KelvinTegelaar Jan 23, 2026
9b7e995
Refactor Add-CIPPDbItem for pipeline streaming and batch efficiency
JohnDuprey Jan 23, 2026
5287714
Remove debug and timing logs from Add-CIPPAzDataTableEntity and Add-C…
JohnDuprey Jan 23, 2026
a16affb
Enhance error handling and info retrieval in core modules
JohnDuprey Jan 25, 2026
1177ffd
Add dynamic redirect URI update for application
JohnDuprey Jan 25, 2026
185c026
Add error handling for redirect URI update in ExecListAppId
JohnDuprey Jan 25, 2026
f153a18
Update Invoke-ExecListAppId.ps1
JohnDuprey Jan 25, 2026
3cbaf96
Optimize tenant info retrieval and trigger CPV refresh
JohnDuprey Jan 25, 2026
09d5c7b
Update success message after adding tenant
JohnDuprey Jan 25, 2026
2b5360e
Set refresh token as environment variable after update
JohnDuprey Jan 25, 2026
82655b3
Add Force switch to Get-CIPPAuthentication
JohnDuprey Jan 25, 2026
68dadd8
Trigger CPV refresh for partner tenant after token update
JohnDuprey Jan 25, 2026
d7bbf29
fix sort
JohnDuprey Jan 26, 2026
412b97e
Added standard to enable windows diagnostic data settings in Intune
ngms-psh Jan 27, 2026
db3ce77
Invoke-ListExtensionsConfig failed to run if table is empty
ngms-psh Jan 27, 2026
ca4a776
Merge pull request #1791 from ngms-psh/feat-intuneWindowsDiagData
KelvinTegelaar Jan 27, 2026
7d9d899
Oops, I forgot to remove some debug output lines
ngms-psh Jan 27, 2026
a8f40fe
Merge branch 'KelvinTegelaar:master' into feat-intuneWindowsDiagData
ngms-psh Jan 27, 2026
2e51ba5
Refactor direct tenant secret loading for efficiency
JohnDuprey Jan 27, 2026
f5b2783
Return status object on test function failure
JohnDuprey Jan 28, 2026
f144e1c
Yeet Write-Hosts
Jan 28, 2026
b833347
Remove use of foreach-object from standards
Jan 28, 2026
88eddb9
Replace foreach New-ExoRequest with New-ExoBulkRequest
Jan 28, 2026
7eab604
Fix BannedWordsList count logic
Jan 28, 2026
f967388
Fix duplicate exo data retrieval in Invoke-CIPPStandardMalwareFilterP…
Jan 28, 2026
0fe392d
Fix duplicate exo data retrieval in Invoke-CIPPStandardSafeAttachment…
Jan 28, 2026
d14d72d
Fix duplicate exo data retrieval for Invoke-CIPPStandardSafeLinksPolicy
Jan 28, 2026
1873448
Fix duplicate exo data retrieval in Invoke-CIPPStandardAntiPhishPolicy
Jan 28, 2026
af0b19c
Use cached capability data instead of making a new call
Jan 28, 2026
3dee3dc
Remove redundant select-object usage
Jan 28, 2026
133df3f
Batch graph disable guests
Jan 28, 2026
19315cc
Optimize retrieval of potentially large graph data sets
Jan 28, 2026
03229d6
Add missing license checks to prevent impossible runs
Jan 28, 2026
0321247
Sequential contact processing likely provides sufficient natural prop…
Jan 28, 2026
45bf2dc
New-GraphBulkRequest
Jan 28, 2026
919bdfc
New-GraphBulkRequest
Jan 28, 2026
1647d3a
Project root cleanup
Jan 28, 2026
383c907
root cleanup
Jan 28, 2026
a1f755e
Clean up obsolete location switches
Jan 28, 2026
46cf0c1
clean up root
Jan 28, 2026
bf37b8d
gitignore all ps1 files except profile.ps1. Messy bastards.
Jan 28, 2026
ad98672
Update log messages for new tenant onboarding
JohnDuprey Jan 28, 2026
06852a2
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Jan 28, 2026
7751426
Refactor test orchestration to per-tenant lists
JohnDuprey Jan 28, 2026
c3187cf
Standards: replace users graph calls with cippdb
Jan 28, 2026
6a26ba5
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Jan 28, 2026
64740a9
Standards: replace servicePrincipals graph call with cippdb
Jan 28, 2026
3185d0b
feat: add new calendar properties to room functions
kris6673 Jan 28, 2026
404f5fb
feat: enhance inactive user alert functionality
kris6673 Jan 28, 2026
9915618
Standards: replace exo mailboxstats with DB
Jan 28, 2026
8655997
Merge pull request #1794 from kris6673/issue5273
KelvinTegelaar Jan 29, 2026
b68ed22
Merge pull request #1793 from kris6673/room-options
KelvinTegelaar Jan 29, 2026
29be6ac
Merge pull request #1792 from ngms-psh/feat-intuneWindowsDiagData
KelvinTegelaar Jan 29, 2026
3a3d378
Limit params on Search-CIPPDbData
Jan 29, 2026
397ae25
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Jan 29, 2026
3356196
remove quad9 as valid resolved
KelvinTegelaar Jan 29, 2026
4875b28
Update Get-CIPPAlertSmtpAuthSuccess.ps1
TecharyJames Jan 29, 2026
46eeb04
Revert "Update identity-openapispec.json"
TecharyJames Jan 29, 2026
dd14fa7
performance improvements for securescore
KelvinTegelaar Jan 29, 2026
8d76ec6
line breaks
KelvinTegelaar Jan 29, 2026
e42e92a
DNSHealth: bump to 1.1.2 and update providers/logic
JohnDuprey Jan 29, 2026
5baa057
clean up legacy stuff around intune template management.
KelvinTegelaar Jan 29, 2026
d3f15c0
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Jan 29, 2026
74e95ee
Fix Intune Standards rerun prevention/filtering
KelvinTegelaar Jan 29, 2026
4bc0143
add some logging
KelvinTegelaar Jan 29, 2026
4461f55
add "INTUNETEMPLATERUN" as AppInsights tracker.
KelvinTegelaar Jan 29, 2026
2d1e866
Merge pull request #1795 from TecharyJames/master
KelvinTegelaar Jan 29, 2026
d33efc4
revert timer
JohnDuprey Jan 29, 2026
f960820
Bump version to 10.0.6
JohnDuprey Jan 29, 2026
cb45ce7
Merge pull request #1797 from KelvinTegelaar/dev
JohnDuprey Jan 29, 2026
64dd205
fix: remove top to fix far too few results returning
kris6673 Jan 29, 2026
ca4be72
feat: enhance vulnerability alert configuration
kris6673 Jan 29, 2026
b374cbd
feat: enhance incident alert with severity filtering
kris6673 Jan 29, 2026
7c23867
feat: add DefenderAlerts with severity filtering options
kris6673 Jan 29, 2026
a0a865b
Replace 'exit 0' with returns in scripts
JohnDuprey Jan 29, 2026
f3eb700
Switch DisableGuests back to graph for now
Jan 30, 2026
a972740
Move template email file back
Jan 30, 2026
68e6c1d
up version
KelvinTegelaar Jan 30, 2026
25c0c14
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
KelvinTegelaar Jan 30, 2026
f9362fa
Merge pull request #1799 from KelvinTegelaar/dev
KelvinTegelaar Jan 30, 2026
3d3626c
move words.txt back to root
Jan 30, 2026
25e98ca
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
Jan 30, 2026
05aacb2
more stuff back to root
Jan 30, 2026
a42df97
move intunecollection back
Jan 30, 2026
334b95f
put set-locations back
Jan 30, 2026
d8cbc43
one more
Jan 30, 2026
a6b55ed
Merge pull request #1800 from KelvinTegelaar/dev
KelvinTegelaar Jan 30, 2026
3216056
Only run DB update if change was made
Jan 30, 2026
7c7cabd
Merge pull request #1801 from KelvinTegelaar/dev
KelvinTegelaar Jan 30, 2026
703f947
fix: remove header parameter from exo request
kris6673 Jan 30, 2026
f415c08
Merge pull request #1802 from kris6673/fix-mailbox-rule
KelvinTegelaar Jan 30, 2026
c670995
fix version check
JohnDuprey Jan 30, 2026
b83297b
Update Invoke-ListExtensionsConfig.ps1
JohnDuprey Jan 30, 2026
edac97e
Optimize audit log processing and GUID lookups
JohnDuprey Jan 30, 2026
bdd7592
Optimize user lookup and limit report output
JohnDuprey Jan 31, 2026
5b4aa9f
Allow null for InputObject parameter
JohnDuprey Jan 31, 2026
75451ee
Fix mailbox cache
JohnDuprey Jan 31, 2026
f50cda4
Use tenant-based batching
JohnDuprey Feb 1, 2026
8429f25
Add timings
KelvinTegelaar Feb 1, 2026
87edcf1
rerun for exchangemonitors
KelvinTegelaar Feb 1, 2026
3ae02bb
Fixed reporting for standard RestrictThirdPartyStorageServices
ngms-psh Feb 1, 2026
b70e851
Added Report to DisableSelfServiceLicenses and refactored remidate to…
ngms-psh Feb 2, 2026
546eb14
StandardDisableSelfServiceLicenses Changed presentation of report values
ngms-psh Feb 2, 2026
420ba3f
Temp location fix for email template
Feb 4, 2026
5fa8988
Update Get-CIPPAlertSmtpAuthSuccess.ps1
TecharyJames Feb 4, 2026
21bc029
bump version to 10.0.8
JohnDuprey Feb 4, 2026
952c237
Merge pull request #1809 from KelvinTegelaar/dev
JohnDuprey Feb 4, 2026
6376880
Licence management granular control and optimisations
Zacgoose Feb 5, 2026
7e08cac
fix exchange monitor
JohnDuprey Feb 5, 2026
8c03182
remove agents prop from compare
JohnDuprey Feb 5, 2026
dde937e
bump version to 10.0.9
JohnDuprey Feb 5, 2026
fe30ed9
Merge pull request #1812 from KelvinTegelaar/dev
JohnDuprey Feb 5, 2026
7214462
Fix nested group lookup and variable naming
JohnDuprey Feb 5, 2026
5d2549d
refactor: clean up guest invitation logic in Invoke-AddGuest
kris6673 Feb 6, 2026
76354bf
Fixes failing calls for licence lookups and moving to a new endpoint
Zacgoose Feb 6, 2026
acebc41
Merge pull request #1814 from Zacgoose/licence-lookup-fixes
KelvinTegelaar Feb 8, 2026
ef967e0
Merge pull request #1813 from kris6673/guest-invite
KelvinTegelaar Feb 8, 2026
8f5d432
Merge pull request #1810 from Zacgoose/licence-management
KelvinTegelaar Feb 8, 2026
5f930a8
Merge pull request #1808 from TecharyJames/smtp-auth-fix
KelvinTegelaar Feb 8, 2026
3396733
Merge pull request #1806 from ngms-psh/feat-AddReportForDisableSelfSe…
KelvinTegelaar Feb 8, 2026
3b302e0
Merge pull request #1805 from ngms-psh/fix-RestrictThirdPartyStorageS…
KelvinTegelaar Feb 8, 2026
cca6461
Merge pull request #1798 from kris6673/vuln
KelvinTegelaar Feb 8, 2026
ea0a6a4
deprecated std
KelvinTegelaar Feb 9, 2026
923a929
use db instead.
KelvinTegelaar Feb 9, 2026
8373fe9
Less exo requests
KelvinTegelaar Feb 9, 2026
11f1df4
use db
KelvinTegelaar Feb 9, 2026
27e8f6f
add some exclusions
KelvinTegelaar Feb 9, 2026
733e1b9
ensure bulk requests are always arrays
JohnDuprey Feb 9, 2026
c9b0b1e
Improve MX record change detection and logging
JohnDuprey Feb 9, 2026
79d7d7a
fix ca policy location lookup
JohnDuprey Feb 9, 2026
d8e734b
fix renaming templates
JohnDuprey Feb 9, 2026
4781956
Clear rerun cache before scheduling task
JohnDuprey Feb 9, 2026
ebe9017
Use generated GUID and add JSON logging
JohnDuprey Feb 9, 2026
8b30e70
Handle guest users and userType in MFA state
JohnDuprey Feb 9, 2026
7b08cc0
Revive Legacy Report Addin
Zacgoose Feb 10, 2026
fd65198
Merge pull request #1816 from Zacgoose/legacyreportaddin
JohnDuprey Feb 10, 2026
cc5c2c8
Add ParticipantGiveRequestControl to Teams policy
JohnDuprey Feb 10, 2026
4c9df40
Merge branch 'dev' of https://github.com/KelvinTegelaar/CIPP-API into…
JohnDuprey Feb 10, 2026
34a76da
added props
KelvinTegelaar Feb 10, 2026
c2de084
Update Search-GitHub.ps1
TecharyJames Feb 10, 2026
facce9b
Search-GitHub.ps1
TecharyJames Feb 10, 2026
93c3a9b
Merge pull request #1821 from TecharyJames/include-forked-repos
JohnDuprey Feb 10, 2026
916e41d
Optimize github api calls for if extension is not enabled
JohnDuprey Feb 10, 2026
abc4d99
Add queue tracking and mailbox rules report
JohnDuprey Feb 10, 2026
ec8f481
Cache mailbox rules batching and DB update ops
JohnDuprey Feb 10, 2026
5fb46b7
make dev environment more cross platform friendly
JohnDuprey Feb 10, 2026
5ab450f
Initialize excluded licenses if table empty
JohnDuprey Feb 10, 2026
1309dd4
Update Get-CIPPLicenseOverview.ps1
JohnDuprey Feb 10, 2026
1de577f
Add cleanup rule for CippStandardsReports table
JohnDuprey Feb 10, 2026
c1d27e1
cleanup logging
JohnDuprey Feb 10, 2026
36443a2
Add feature flag support and endpoints
JohnDuprey Feb 11, 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
  •  
  •  
  •  
Binary file added .DS_Store
Binary file not shown.
113 changes: 113 additions & 0 deletions .github/agents/CIPP-Alert-Agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
# Fill in the fields below to create a basic custom agent for your repository.
# The Copilot CLI can be used for local testing: https://gh.io/customagents/cli
# To make this agent available, merge this file into the default repository branch.
# For format details, see: https://gh.io/customagents/config

name: CIPP Alert Engineer
description: >
Implements and maintains CIPP tenant alerts in PowerShell using existing CIPP
patterns, without touching API specs, avoiding CodeQL, and using
Test-CIPPStandardLicense for license/SKU checks.
---

# CIPP Alert Engineer

## Mission

You are an expert CIPP alert engineer for the CIPP repository.

Your job is to implement, update, and review **alert-related functionality** in CIPP, following existing repository patterns and conventions. You primarily work on:

- Creating new `Get-CIPPAlert*` PowerShell functions
- Adjusting existing alert logic when requested
- Ensuring alerts integrate cleanly with the existing scheduler and alerting framework
- Performing light validation and linting

You **must follow all constraints in this file** exactly.

---

## Scope of Work

Use this agent when a task involves:

- Adding a new alert (e.g. “implement alert for X condition”)
- Modifying logic of an existing alert
- Investigating how alerts are scheduled, run, or configured
- Performing small refactors or improvements to alert-related PowerShell code

You **do not** make broad architectural changes. Keep changes focused and minimal.

---

## Key Directories & Patterns

When working on alerts, you should:

1. **Discover existing alerts and patterns**
- Use shell commands to explore:
- `Modules/CIPPCore/Public/Alerts/`
- Inspect several existing alert files, e.g.:
- `Modules/CIPPCore/Public/Alerts/Get-CIPPAlertNoCAConfig.ps1`
- Other `Get-CIPPAlert*.ps1` files
- Understand how alerts are **named, parameterized, and how they call Graph / Exo and helper functions**.

2. **Follow the standard alert pattern**
- Alert functions live in:
`Modules/CIPPCore/Public/Alerts/`
- Alert functions are named:
`Get-CIPPAlert<Something>.ps1`
- Typical characteristics:
- Standard parameter set, including `TenantFilter` and similar common params.
- Uses CIPP helper functions like:
- `New-GraphGetRequest` / other Graph or Exo helpers
- `Write-AlertTrace` for emitting alert results
- Uses CIPP logging and error-handling patterns (try/catch, consistent message formatting).

3. **Rely on existing module loading**
- The CIPP module auto-loads `Public` functions recursively.
- **Do not** modify module manifest or loader behavior just to pick up your new alert.

---

## Critical Constraints

You **must** respect all of these:

### 1. Always follow existing CIPP alert patterns

When adding or modifying alerts:

- Use the **same structure** as existing `Get-CIPPAlert*.ps1` files:
- Similar function signatures
- Similar logging and error handling
- Same approach to returning alert data via `Write-AlertTrace`
- Reuse helper functions instead of inlining raw Graph calls or custom HTTP code, whenever possible.
- Keep alert behavior predictable and consistent with existing alerts.

### 2. No CodeQL runs

- **Do not** invoke CodeQL or similar heavy security tooling in your workflow.
- Rely on:
- PowerShell syntax checking
- `PSScriptAnalyzer`
- Manual/code-review style reasoning for security (no secrets, least privilege, etc.)

### 3. License / SKU checks must use `Test-CIPPStandardLicense`

When an alert depends on a tenant having certain SKUs or capabilities, you **must**:

- Use `Test-CIPPStandardLicense`
- Do **not** manually inspect SKUs, raw license IDs, or raw capability lists.

Example pattern (adapt to the specific feature):

```powershell
$TestResult = Test-CIPPStandardLicense -StandardName 'AutopilotProfile' -TenantFilter $Tenant -RequiredCapabilities @(
'INTUNE_A',
'MDM_Services',
'EMS',
'SCCM',
'MICROSOFTINTUNEPLAN1'
)
142 changes: 142 additions & 0 deletions .github/agents/CIPP-Standards-Agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
---
name: CIPP Standards Engineer
description: >
This agent creates a new standard based on existing standards inside of the CIPP codebase.
The agent must never modify any other file or perform any other change than creating a new standard.
---

# CIPP Standards Engineer

name: CIPP Alert Engineer
description: >
Implements and maintains CIPP tenant alerts in PowerShell using existing CIPP
patterns, without touching API specs, avoiding CodeQL, and using
Test-CIPPStandardLicense for license/SKU checks.
---

# CIPP Alert Engineer

## Mission

You are an expert CIPP Standards engineer for the CIPP repository.

Your job is to implement, update, and review **Standards-related functionality** in CIPP, following existing repository patterns and conventions. You primarily work on:

- Creating new `Invoke-CIPPStandard*` PowerShell functions
- Adjusting existing standard logic when requested
- Ensuring standards integrate into the frontend by returning the correct information
- Performing light validation and linting

You **must follow all constraints in this file** exactly.

---

## Scope of Work

Use this agent when a task involves:

- Adding a new standard (e.g. “implement a standard to enable the audit log”)

You **do not** make broad architectural changes. Keep changes focused and minimal.

---

## Key Directories & Patterns

When working on alerts, you should:

1. **Discover existing alerts and patterns**
- Use shell commands to explore:
- `Modules/CIPPCore/Public/Standards/`
- Inspect several existing alert files, e.g.:
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardAddDKIM.ps1`
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardlaps.ps1`
- `\Modules\CIPPCore\Public\Standards\Invoke-CIPPStandardOutBoundSpamAlert.ps1`
- Other `Invoke-CIPPStandard*.ps1` files
- Understand how alerts are **named, parameterized, and how they call Graph / Exo and helper functions**.

2. **Follow the standard alert pattern**
- Alert functions live in:
`Modules/CIPPCore/Public/Standardss/`
- Alert functions are named:
`Invoke-CIPPStandardAddDKIM.ps1`
- Typical characteristics:
- Standard parameter set, including `Tenant` and `Settings` which can be a complex object with subsettings, and similar common params.
- Uses CIPP helper functions like:
- `New-GraphGetRequest` for any graph requests
- `New-ExoReques` for creating exo requests
- Uses CIPP logging and error-handling patterns (try/catch, consistent message formatting).
- Each standard requires a Remediate, alert, and report section.

3. **Rely on existing module loading**
- The CIPP module auto-loads `Public` functions recursively.
- **Do not** modify module manifest or loader behavior just to pick up your new standard.

---

## Critical Constraints

You **must** respect all of these:

### 1. Always follow existing CIPP alert patterns

When adding or modifying alerts:

- Use the **same structure** as existing `Invoke-CIPPStandard*.ps1` files:
- Similar function signatures
- Similar logging and error handling
- Reuse helper functions instead of inlining raw Graph calls or custom HTTP code.
- Keep behaviour predictable.

### 2. Return the code for the frontend.

The frontend requires a section to be changed in standards.json. This is an example JSON payload:

```json
{
"name": "standards.MailContacts",
"cat": "Global Standards",
"tag": [],
"helpText": "Defines the email address to receive general updates and information related to M365 subscriptions. Leave a contact field blank if you do not want to update the contact information.",
"docsDescription": "",
"executiveText": "Establishes designated contact email addresses for receiving important Microsoft 365 subscription updates and notifications. This ensures proper communication channels are maintained for general, security, marketing, and technical matters, improving organizational responsiveness to critical system updates.",
"addedComponent": [
{
"type": "textField",
"name": "standards.MailContacts.GeneralContact",
"label": "General Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.SecurityContact",
"label": "Security Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.MarketingContact",
"label": "Marketing Contact",
"required": false
},
{
"type": "textField",
"name": "standards.MailContacts.TechContact",
"label": "Technical Contact",
"required": false
}
],
"label": "Set contact e-mails",
"impact": "Low Impact",
"impactColour": "info",
"addedDate": "2022-03-13",
"powershellEquivalent": "Set-MsolCompanyContactInformation",
"recommendedBy": []
},
```

the name of the standard should be standards.<standardname>. e.g. Invoke-CIPPStandardMailcontacts becomes standards.Mailcontacts.

Added components might be required to populate the $settings variable. for example addedcomponent "standards.MailContacts.GeneralContact" becomes $Settings.GeneralContact

When creating the PR, return the json in the PR text so a frontend engineer can update the frontend repository.
73 changes: 42 additions & 31 deletions .github/workflows/dev_api.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,42 @@
# Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: dev_api

on:
push:
branches:
- dev
workflow_dispatch:

env:
AZURE_FUNCTIONAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root

jobs:
deploy:
if: github.event.repository.fork == false && github.event_name == 'push'
runs-on: windows-latest

steps:
- name: 'Checkout GitHub Action'
uses: actions/checkout@v4

- name: 'Run Azure Functions Action'
uses: Azure/functions-action@v1
id: fa
with:
app-name: 'cippjta72'
slot-name: 'Production'
package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_5B44448119C645C099EE192346D7433A }}
# Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: dev_api

on:
push:
branches:
- dev
workflow_dispatch:

env:
AZURE_FUNCTIONAPP_PACKAGE_PATH: "." # set this to the path to your web app project, defaults to the repository root

jobs:
deploy:
permissions:
id-token: write #This is required for requesting the JWT
contents: read #This is required for actions/checkout
if: github.event.repository.fork == false && github.event_name == 'push'
runs-on: windows-latest

steps:
- name: "Checkout GitHub Action"
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.DEV_CLIENTID }}
tenant-id: ${{ secrets.DEV_TENANTID }}
subscription-id: ${{ secrets.DEV_SUBSCRIPTIONID }}

- name: "Run Azure Functions Action"
uses: Azure/functions-action@v1
id: fa
with:
app-name: "cippjta72"
slot-name: "Production"
package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
31 changes: 0 additions & 31 deletions .github/workflows/dev_api_proc.yml

This file was deleted.

30 changes: 0 additions & 30 deletions .github/workflows/dev_cippahmcc.yml

This file was deleted.

Loading