Wazuh GitHub audit log monitoring

Wazuh GitHub audit log monitoring shows who changed permissions, memberships and repositories in your GitHub organization. This page covers the integration method, setup, alert design and testing.

On this page

Wazuh GitHub audit log monitoring: what the integration gives your security team

Wazuh GitHub audit log monitoring brings events from a GitHub organization's audit log into Wazuh, so your security team can alert on changes to roles, memberships and repositories. That matters because a GitHub organization holds source code and deployment access, and a change to who can do what is often the first visible sign that an account has been compromised. This page covers the supported collection method, prerequisites, configuration, event mapping, security controls, testing and the failure points that most often break the pipeline. Before any configuration step is written, confirm the exact GitHub collection method in the current Wazuh documentation, because the supported approach and its settings must come from the vendor's current guidance.

Once events reach Wazuh, the server applies decoders to read the event fields and rules to decide which events deserve an alert. The indexer stores both the events and the resulting alerts for search, and the dashboard gives analysts a place to filter by actor, organization and event type. For a security team, the value comes from deciding in advance which event families matter. Candidate categories include organization membership changes, team permission changes, repository visibility changes, branch protection edits, deploy key and personal access token activity, and installation of third-party GitHub Apps. Map each category to a named owner and an expected response before you write any rule, so alerts lead to action and do not pile up unread.

The most useful rules look at sequences of events, since the combination often says more than either event alone. In an illustrative case, an account adds a new member to an admin team, then changes a private repository to public within a short window. Other patterns worth testing include a sudden burst of repository deletions or archive actions, new deploy keys added to production repositories, and creation of new access tokens by accounts that rarely use them. Test each pattern against a copy of your own audit log history, and confirm which fields GitHub records for each event type, such as the acting user, the source address and the target, because a rule can only match fields the source actually delivers.

Before anything is connected, settle the credential model. Confirm with the current Wazuh and GitHub documentation which credential type the collection method accepts, which scopes or organization roles it needs to read the audit log, and whether your GitHub plan exposes the audit log for the organization. Use a dedicated service identity with read access only, store its secret in your secrets manager, and record who can rotate it. The collection path is itself a target: anyone who can read the credential can read every change in the organization, so treat the Wazuh server and its configuration with the same care as the systems it watches.

Three decisions shape the rest of the work. First, decide who owns the alerts: the security operations team, the platform team, or both, with a named escalation path into the identity team. Second, decide how long audit events are retained, both in GitHub and in Wazuh, since an investigation may need to reach back further than your alert window. Third, define what failure looks like, such as an expired token, a collection gap or a rule that stops matching after a change in event format. Ask any implementation partner to show how it will detect each of these failures, and to state in the written scope which GitHub and Wazuh versions it tested against.

What you need before connecting GitHub to Wazuh

Six checks decide whether the GitHub connection can start: the Wazuh release line, the central components, GitHub access and plan, the read-scope credential and the network path between them. Confirm each scope and endpoint against the current Wazuh and GitHub documentation before you change production settings.

Wazuh 4.14 release line

Plan the deployment on the 4.14 release line, which is the current Wazuh release line. Check your exact patch level against the Wazuh release notes before you build, because 4.14.9 was released on 14 October 2026 and 4.14 patch releases have arrived roughly every one to two months. Record the version in your change ticket so that later upgrades can be sequenced against the GitHub integration and its configuration.

Wazuh indexer, server and dashboard

Confirm that all three central components are installed and healthy before you add any data source. The indexer stores alerts, the Wazuh server decodes and analyzes incoming events, and the dashboard is where analysts search GitHub audit events and build alert views. Decide which host runs the Wazuh server, because that host makes the outbound calls to GitHub. Confirm the integration steps for your deployment method in the Wazuh documentation.

GitHub owner or admin access

An organization owner or admin must approve the integration and create the token or GitHub App that Wazuh will use. Lower roles may not be able to create the required access, so confirm the role your organization needs against GitHub's current documentation. Agree in advance who holds that role and who will rotate the credential later, because that person becomes the single point of contact for access changes.

Audit log availability for the org plan

Confirm that the audit log is available for your organization's GitHub plan and that the event types you plan to monitor are included. Feature availability varies by plan, so check the current GitHub documentation before you assume a monitored event is present. Also confirm how far back the log retains events, because that sets how much history you can backfill when the integration first runs and how far back investigations can reach.

Minimum read-scope token or app

Choose the authentication method that the Wazuh integration documentation supports, then grant only the read scope that method needs. Confirm the exact scope names, and whether the method uses a personal access token or a GitHub App, against the current Wazuh and GitHub documentation. Store the secret in a secrets store or in a root-only file on the Wazuh server, keep it out of shell history, tickets and version control, and record an expiry date and a rotation owner.

Outbound HTTPS and proxy rules

The Wazuh server must reach GitHub's API endpoints over outbound HTTPS, either directly or through your proxy. Ask the network team to allow the specific GitHub endpoints that the chosen method calls, and confirm those endpoints in the documentation rather than copying a generic allow-list. If a proxy inspects TLS, confirm that the Wazuh server trusts the certificate chain. Test the connection from the Wazuh server itself, because a successful request from a workstation proves nothing about the server's path.

How Wazuh collects GitHub audit events and where the decision points are

The first decision is which collection method the Wazuh documentation describes for GitHub audit events, because that choice determines who holds the credential, how quickly events reach the server and what happens during an outage. Before you build anything, open the GitHub integration guide in the Wazuh documentation for the release line you plan to run (the current line is 4.14) and confirm which methods it describes, what each one requires on the GitHub side and what each one requires on the Wazuh side. Record the answer in the design document so the later decisions in this section have a fixed reference point.

The data path has four stops. GitHub produces audit events for the organization. The collection method, whichever one you choose, moves those events to the Wazuh server. The server applies decoders, which break each raw event into named fields, and then rules, which decide whether an event matters and how severe it is. Matching events become alerts, and the Wazuh indexer stores them for search and analysis before the Wazuh dashboard displays them. Check that the decoders and rules shipped with your Wazuh version cover the GitHub event types you care about, such as membership changes, team and permission changes, repository visibility changes and changes to protected branches. Gaps in rule coverage are a common reason detection looks complete on paper and misses real activity.

If the method polls the GitHub API on a schedule, the polling interval sets the trade-off between detection latency and API consumption. A short interval shortens the time between an account change and its alert, but it spends more of your API budget. GitHub applies rate limits to API calls, and those limits are shared by every tool that uses the same token. Confirm the current limits for the audit log endpoints and the token type you plan to use, then size the interval so normal collection stays well below them with room for retries. Also plan for collection to stall, and alert when the most recent event timestamp falls behind the expected time.

GitHub does not keep audit events indefinitely, so the retention window on GitHub's side limits how far back you can recover after a collector outage. Ask GitHub to confirm the retention period that applies to your organization's plan and then compare it with the longest outage your operations team could take to repair. If the window is shorter than that outage, a polling design needs a monitoring alert that fires before the window closes. If the method forwards events to a receiver you operate, retention moves to your side, but the receiver becomes an internet-facing or network-reachable service you must secure. Confirm whether your organization's plan supports the forwarding option at all before you choose it.

Whoever holds the GitHub credential can read the organization's audit trail, so treat that credential as a high-value secret. Use a dedicated service identity rather than a personal account, grant only the read permissions the chosen method needs, record a named owner, store the token in a secrets manager and set a rotation schedule. In a polling design, the Wazuh server holds the credential, so restrict access to its configuration files and to the host. In a forwarding design, you manage a shared secret or endpoint credential that GitHub or the receiver must present, and you should decide who can rotate it. Finally, monitor the service identity's own activity, because a compromised collector credential is one of the cases this monitoring is meant to catch.

Configuration sequence for GitHub audit log collection in Wazuh

This sequence takes a Wazuh deployment from a healthy baseline to GitHub organization audit events arriving in the Wazuh indexer and visible in the dashboard. Each step ends with a check you can record, so a failed step is found before alerting rules are tuned. Steps marked as method details to confirm depend on how the collection method is documented for your Wazuh version, so verify them before you run those steps.

  1. Confirm Wazuh version and component health

    The Wazuh administrator checks that the indexer, server, dashboard and agents you plan to use are on the same release line, and that the patch level matches what your change plan covers. Confirm the exact version against the Wazuh release notes before any change is made. Verify that the Wazuh server and indexer services are active, that the indexer reports a healthy state, and that the dashboard loads and accepts a login. Done when the service status output and the dashboard check are recorded with no errors in the server log.

  2. Create a GitHub credential with minimum scope

    The GitHub organization owner creates a dedicated credential for Wazuh, limited to reading organization audit log data and nothing else. Method detail to confirm: check GitHub's current documentation for which token type and permission grant access to organization audit log events, because the options and plan requirements can change. Record the credential owner, expiry date and the organization it covers. Done when a direct API request with the credential returns audit entries for the organization, and a request for an unrelated resource is refused.

  3. Store the credential outside plain configuration

    The Wazuh administrator places the token in a secrets store or in a file readable only by the account that runs the Wazuh service. The configuration then refers to the token by file path or environment variable, and the token value never appears in the configuration file itself. Method detail to confirm: check which referencing mechanism the chosen collection method supports before you write the file. Done when a search of the configuration directory for the token string returns no matches and the secret file shows owner-only read permissions.

  4. Add the collection configuration on the server

    The Wazuh administrator adds the GitHub collection block to the Wazuh server configuration, using the method confirmed earlier, the organization name and the credential reference from the previous step. Method detail to confirm: the exact block name, option names and polling settings depend on the collection method and version you verified, so copy them from the documentation for that version. Run the server's configuration check before any restart. Done when the configuration test completes with no errors reported.

  5. Restart the service and read the server log

    The Wazuh administrator restarts the Wazuh server service, or reloads it if the chosen method documents a reload, and then follows the server log. Look for an authentication success message and a poll cycle that completes without repeated errors. Method detail to confirm: the log wording for a successful poll depends on the collection method, so take the expected message from its documentation. If authentication fails, stop and recheck the credential scope and the secret reference before retrying. Done when the log shows at least one completed poll cycle with no authentication errors.

  6. Confirm events reach the indexer and dashboard

    The GitHub organization owner makes a controlled change that produces an audit event, such as adding and then removing a test member in a non-production organization (illustrative example). The Wazuh administrator then searches for that event in the dashboard, checking the timestamp, actor and action fields. Confirm which alert or archive view your configuration writes to before searching. Done when the test event is visible in the indexer with the expected fields and the timestamp matches the time of the change.

Which GitHub audit events map to which Wazuh alerts

This table maps each GitHub audit event category to the Wazuh fields and rule groups to confirm, a suggested alert severity and the business owner who should act on it. Treat every field and group name as a item to verify, not a settled value: generate a live test event for each category, record the decoded output and the rule that fired, then adjust severity and routing to match your environment. The main takeaway is that severity should follow privilege and exposure, so an owner-role grant or a visibility change on a sensitive repository reaches someone who can respond.

Event categoryWazuh fields and rule groups to confirmSuggested severityBusiness owner
Organization membership changesDecoded member action and actor fields; confirm the rule group that fires when members are added or removedHigh for owner-role grants, medium for standard membersIT or identity team lead
Team and role changesDecoded team and permission fields; confirm the rule group for team permission updatesHigh when a team gains admin rights on repositoriesEngineering manager and security lead
Repository visibility and permission changesDecoded repository and visibility fields; confirm the rule group for visibility and collaborator changesHigh when a private repository becomes publicRepository owner and product security
Branch protection and deploy key changesDecoded protected branch and deploy key action fields; confirm the rule group for each action typeHigh for protection removal on default branchesRelease manager and platform engineering
Personal access token and SSH key eventsDecoded token and key action fields; confirm the rule group for creation and deletionMedium for creation, high for an unrecognized actorSecurity operations and the affected user's manager
OAuth and GitHub App authorizationsDecoded application and installation action fields; confirm the rule group for new authorizationsHigh for new installations with broad repository accessSecurity operations and the organization administrator

Which GitHub activity patterns suggest a compromised account

A single GitHub audit event rarely justifies waking anyone up. Adding a member, changing a repository setting or creating a token can each be routine. The signal comes from sequences that a compromised account tends to produce within a short window. In a Wazuh deployment, that usually means writing a base rule for each relevant audit event, then a correlation rule on the Wazuh server that fires only when related events occur together within a set timeframe. Five patterns are worth starting with: a new member added to an admin team shortly after a token or SSH key is created, a repository switched to public, branch protection removed before a push, sign-ins or token use from unexpected locations or outside working hours, and many changes made by one actor in a short period. Confirm the exact action names and fields your GitHub audit log produces before writing any rule.

None of these patterns should ship with default thresholds. What counts as unusual depends on how your organization already works. Release managers may remove branch protection every sprint, CI service accounts may create tokens on a schedule, and some teams may add contractors to admin groups during onboarding. Before tuning, collect a baseline of normal change activity covering at least one full release cycle, and record which actors, teams and hours appear in it. Then decide, for each pattern, the time window, the number of events that counts as a bulk change, and which locations or hours are expected. Those decisions belong to the client's security and engineering leads, and each value should be written down with its reason so auditors and future responders can follow it.

Location and time-of-day checks depend on data your environment actually contains. Confirm whether the audit entries you ingest include the source address for sign-ins and token use, how your team maps those addresses to known office, VPN and CI ranges, and whether the dashboard can filter on them without extra enrichment. Also confirm how delayed audit events arrive. A correlation rule that expects a token creation before a membership change will miss the pair if the events land out of order or outside the timeframe. Build the rule so that a late event does not silently break the chain, or document the gap so triage knows to check the raw log.

Treat each pattern as an indicator that starts triage, not as proof of compromise. The alert should tell the responder which account acted, which events matched, and what the approved change process would have looked like, so they can confirm with the account owner and the change record. Test every rule before it pages anyone. Replay known benign sequences from a sandbox or staging organization, run simulated sequences that match each pattern, and count the false positives and misses. Record the rule identifiers, the tuned values and the test results, because those records show how the detection was built and when it was last reviewed.

How to protect the credential and the alert pipeline

The GitHub audit log feed is only as trustworthy as the token that reads it and the Wazuh components that store and display its alerts. The cards below cover the collector's access, how its credential is stored and rotated, who can read or change the configuration that references it, how dashboard roles are separated, how long logs are kept, and how to notice if the Wazuh server itself is altered.

Least-privilege GitHub access for the collector

Create a dedicated GitHub identity for the collector instead of reusing a personal token or an administrator's account. Grant only the audit log read permission the integration needs, and confirm in GitHub's current documentation which token type and scopes your organization's plan supports. Check that the identity cannot modify repositories, membership or settings, so a stolen collector token cannot change the environment it monitors.

Credential storage and rotation

Keep the GitHub token out of plain-text files on the Wazuh server and out of version control. Store it in a secrets manager or a restricted file readable only by the service account that runs the integration, and record which system holds the authoritative copy. Define a rotation procedure with an owner, a schedule, and a tested way to update the Wazuh configuration without a gap in collection.

Restricting read access to Wazuh configuration

The Wazuh configuration that references the GitHub integration should be readable only by the people who maintain it, because exposure of that file can reveal where the credential is stored and how it is used. Restrict file permissions on the server, limit who can open the configuration through remote management, and review access to the repository or change system where these files are versioned.

Dashboard role separation for alert rules

Separate people who can view GitHub audit alerts from people who can change the rules that generate them. Analysts usually need read access to alerts and investigation views, while rule and decoder changes should go through a smaller group with a change record. Map these roles in the Wazuh dashboard's user and role settings, and test that an analyst account cannot disable or edit a GitHub audit rule.

Retention of GitHub and Wazuh logs

Decide how long the raw GitHub audit events, the Wazuh alerts stored in the indexer, and the Wazuh server logs are kept, and keep the three periods consistent with your incident response and legal requirements. Confirm with GitHub how far back its audit log retains events for your plan, because anything older than that exists only in your copy. Plan storage capacity for the retained volume and test that older indices can still be searched.

Tamper awareness for the Wazuh server

An attacker who gains control of the Wazuh server could suppress or edit the alerts about their own activity. Forward key Wazuh and operating system logs to a location the server cannot rewrite, monitor the integrity of the Wazuh configuration and rule files, and alert when the collector stops reporting. Review these checks after each Wazuh upgrade, since changed file paths or services can silently disable them.

How to prove the alerts fire before anyone relies on them

Before any GitHub audit log alert is treated as a control, the team should prove that a known action produces the expected event, decodes correctly in Wazuh and triggers the intended rule. The test plan is the mechanism for that proof. It should run against a sandbox GitHub organization or a dedicated test team, never against production teams, and every test action must be approved in writing by the GitHub organization owner before it runs. Agree the approver, the test window and the rollback steps in that approval so the person who owns the organization knows exactly what will change and when it will be reversed.

Choose test changes that are controlled and reversible, and that map to the alert categories the page covers. A useful first set is adding a test user to a test team and then removing them, changing the visibility of a throwaway repository and changing it back, and creating a fine-grained personal access token or other credential in a test account and then revoking it. For each action, record the exact time, the actor, the target and the expected audit log action name. Then confirm three things in Wazuh: the event was ingested, the decoder extracted the fields the rule depends on (actor, organization, action and target), and the rule that should match did match, at the level you expect. A test that only shows an event arrived is not enough, because a missing or mis-decoded field can silently stop a rule from firing.

Measure the end-to-end delay from the GitHub action to the point where the alert is visible in the Wazuh dashboard. Run each test several times, at different times of day, and record the minimum, maximum and typical delay. GitHub's audit log delivery, the collection method you chose, and the Wazuh ingestion path all contribute to this number, so note which component you are timing. Ask the team that will act on alerts what delay they can tolerate for each category, such as a removed administrator versus a routine membership change. If the measured delay is longer than that tolerance, the alert is a record rather than a response trigger, and the runbook should say so.

Record every result as evidence in a test log that can be reviewed later. For each test, keep the action taken, the approval reference, the raw audit log entry, the decoded fields in Wazuh, the rule ID and level that matched, the measured delay, the pass or fail outcome and the name of the person who checked it. Keep the rule definitions and their version alongside the log, because a later rule change can invalidate an earlier pass. Also plan for failures: a failed test should open a tracked defect against the decoder, the rule or the collection setup, and the alert should not be relied on until the test passes again. Repeat the full test set after each Wazuh upgrade or change to the GitHub integration, since either can change decoding behavior.

Before you start, confirm with the GitHub organization owner which audit log events your plan and plan tier expose, which API or streaming method you will use, and whether the test accounts can be created and removed without affecting billing or security policies. Confirm the Wazuh components and versions in your environment against the Wazuh release notes and your own change records, because the rules and decoders you test must be the ones that will run in production. These checks determine whether the test plan can be executed as written, and they belong in the approval request.

Why GitHub events stop arriving or alert wrongly in Wazuh

This table lists common reasons GitHub audit events stop reaching Wazuh or trigger alerts that do not match what happened. Each row gives a symptom, the likely cause and the check to run before changing anything. Treat every cause as a hypothesis until server logs and the current Wazuh and GitHub documentation confirm it.

SymptomLikely causeConfirm and fix
No events arriveAccess token expired or was revokedCheck the server logs for authentication errors. Issue a new token with the required scope, store it securely and update the configuration.
Some event categories are missingToken or app lacks the scope those categories needCompare the events you expect with the permissions granted. Add the missing scope, then test each category again.
Gaps in events or delayed collectionAPI rate limiting or pagination not followedLook for rate-limit responses in the logs. Confirm the collector follows pagination and backs off as the current GitHub API documentation describes.
Collection fails only from the Wazuh serverOutbound network, firewall or proxy blocks GitHubTest connectivity from the Wazuh server using the same proxy settings. Allow the GitHub endpoints listed in current documentation.
Alerts show wrong times or out of orderTimestamp format or time zone differs between GitHub and WazuhCompare a raw GitHub event with its indexed timestamp. Confirm UTC handling and clock sync (NTP) on the server.
Fields empty or events not decodedGitHub changed the event format and the decoder no longer matchesCompare a recent raw event with the decoder pattern. Update the decoder and add a sample event that covers the change.
Flood of low-value alertsScheduled bots or automation accounts trigger routine rulesGroup alerts by actor. Lower the level or suppress approved automation accounts, and document each exception.
Duplicate alerts after a restartCollector resumes from an old position or re-reads a time windowCompare the saved read position and event IDs before and after restart. Deduplicate on event ID and correct the checkpoint.

Questions teams ask before connecting GitHub audit logs to Wazuh

How much effort does connecting GitHub audit logs to Wazuh take?

The effort depends on four inputs: how many GitHub organizations and repositories are in scope, how many event categories you collect, how much alert tuning the rules need, and how many teams will act on the alerts. A single organization with a short list of categories and one response team is a small build. Several organizations with membership, permission, repository and token events routed to different owners takes longer, mostly in tuning and in agreeing who responds to each alert. Ask any provider to price the work against those four inputs in writing, and ask which assumptions sit behind the quote. DeployOpen agrees scope, deliverables and timelines in a fixed-scope written proposal before work starts, so the quote follows from the scope you approve.

Can our internal team connect GitHub audit logs to Wazuh without a partner?

Yes, if your team has working skills in both Wazuh and GitHub administration and enough time to test before alerts reach people. The build involves the Wazuh server configuration, collection of GitHub audit events, decoders and rules, and the GitHub organization settings that expose the audit log. Teams that already run Wazuh agents and manage organization owner settings usually find the setup manageable. The step most often underestimated is testing. Someone must generate controlled membership and permission changes, confirm they arrive in Wazuh and match the intended rule, and then tune the noise. If nobody can set aside that time, weigh a fixed-scope engagement against your own schedule and staffing.

What does our organization need to provide before the integration starts?

You need four things before work starts. First, approval from a GitHub organization owner to configure access to the audit log, since the log covers membership and permission history for the whole organization. Second, a test organization where changes can be made safely and events triggered on purpose. Third, a named person who owns alerts after go-live and decides what happens when a rule fires outside business hours. Fourth, network access between the Wazuh components and the GitHub endpoints the integration uses. Confirm the exact network paths with your network team, because egress rules differ between environments and between data centers and cloud accounts.

Which parts of GitHub audit log monitoring are one-time and which are ongoing?

The initial build and tuning are one-time work. They include configuring collection, writing or adapting decoders and rules, testing against controlled events, and setting alert levels and routing. Ongoing work includes maintaining rules as GitHub adds or changes event types, reviewing alerts as teams and responsibilities change, and upgrading Wazuh. The Wazuh 4.14 line shipped patch releases on 17 March, 23 April, 1 July, 29 July, 23 September and 14 October 2026, according to the Wazuh release notes. Plan for a recurring upgrade window through the year. After each upgrade, retest the integration, because a rule that worked on one release may need adjustment on the next. Ask any provider to split its quote into these two categories.

Does self-hosted Wazuh charge a license fee for GitHub audit log monitoring?

Self-hosted Wazuh has no license fee. The software is distributed under the GNU General Public License version 2, with an exception that permits linking with the OpenSSL library, as stated in the Wazuh LICENSE file on GitHub. So the GitHub audit log integration adds no Wazuh license line item. Your costs are the infrastructure that runs the Wazuh indexer, server and dashboard, the people who build and operate the integration, and any support you choose to buy. Have your legal team review the license terms against your intended use, particularly if you plan to distribute modified Wazuh software. Costs for infrastructure and labor should come from your own estimates and written quotes.

How do Wazuh Cloud plans compare with running Wazuh ourselves?

Wazuh Cloud is the vendor's managed, cloud-delivered XDR and SIEM service, and it is sold separately from the open-source software. Its plans come in Small, Medium, Large and Custom tiers, and every paid plan includes at least Standard support. The vendor offers a 14-day free trial that needs no credit card, which lets you evaluate the managed option before deciding. Ask the vendor which tier covers the GitHub audit log integration and whether that integration is configured for you or left to your team. Build a comparison that lists infrastructure you pay for directly, operational work you carry, and the support level in each option. DeployOpen is not a Wazuh partner or reseller, so take Wazuh Cloud plan terms directly from the vendor.

How do we avoid alert fatigue from GitHub audit events in Wazuh?

Start with the event categories that matter most to your risk, then add more only after the first set produces alerts your team acts on. Permission changes, membership changes and repository visibility changes are common first candidates. Routine events can be stored for search without raising alerts. Set alert levels so that only events needing a human response reach an on-call channel, and route each category to the owner who can act on it. During the first months, review the most frequent rules and adjust or suppress those that fire on expected administrative work, such as scheduled automation. Document each tuning decision so the next person understands why a rule exists. Tuning continues after launch because teams, automation and GitHub configurations change over time.

What should we verify in a test organization before going live?

Start by confirming which audit events your GitHub plan and organization settings expose, because coverage depends on what GitHub provides for your account type. Check the current GitHub documentation against the event names your rules expect. Then perform controlled actions, such as adding and removing a test member, changing a team permission and creating a repository. For each action, verify that the event appears in Wazuh with the expected fields and triggers the intended rule. Record any events that arrive late or with missing fields, and decide whether to accept them or raise them with the vendor. Repeat the full test after every Wazuh upgrade, since decoder and rule changes can alter results.

How DeployOpen works on this

DeployOpen plans, builds and documents Wazuh GitHub audit log monitoring inside your own infrastructure, with the Wazuh server, indexer and dashboard running on systems you control. The work starts with a written scope that names the GitHub organizations, event types and alert conditions covered. Each stage is documented so your team can operate the integration after handover.

How we scope

  • Written scope listing the GitHub organizations, plans and audit event categories to be collected.
  • Alert conditions for permission changes, membership changes, repository events and suspicious account activity, agreed before build.
  • Confirmation of the GitHub credential type, token ownership and API access your organization can grant, checked against Wazuh documentation.

How we build

  • Deploy or extend the Wazuh server, indexer and dashboard in your environment, using the installation method your standards allow.
  • Configure GitHub collection, decoders and rules, and keep the API credential in a secrets store your team controls.
  • Test each alert condition with controlled GitHub actions in a non-production organization or agreed test window before go-live.

How we hand over

  • Written runbook covering collection setup, rule logic, alert routing and credential rotation steps.
  • Configuration records and a test log showing which GitHub actions produced which alerts.
  • Knowledge transfer to your security and platform engineers on triage, tuning and troubleshooting the pipeline.

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer after handover.
  • Wazuh upgrades and GitHub event changes reviewed against the release notes before rules are changed.
  • Quote requested against the written scope, so ongoing effort can be tied to the organizations and alert conditions in scope.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.