All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
The intended audience of this file is for incydr SDK and CLI consumers -- as such, changes that don't affect
how a consumer would use the library or CLI tool (e.g. adding unit tests, updating documentation, etc) are not captured
here.
- Added several parameters to the
sdk.agents.v1.get_pageandsdk.agents.v1.listmethods:serial_number- the serial number of the agents to match.agent_os_types- the list of operating systems ("LINUX", "MAC", "WIN") to match.connected_in_last_days- filter to agents that have connected in this number of days.not_connected_in_last_days- filter to agents that have not connected in this number of days.
- Added corresponding options to the
incydr agents listcommand.--serial-number--agent-os-types--connected-in-last-days--not-connected-in-last-days
- Added support for filtering agents by agent health state modification date.
- Added the
agent_health_modified_in_last_daysparameter in the SDK's agent get methods to filter agents by health state modification date. - Added the
--agent-health-modified-within-daysoption to the CLI'sincydr agents listcommand to filter agents by health state modification date. - Added the
agent_health_modification_datefield to the Agent response model.
- Added the
- The
incydr users list-agentscommand to list all agents associated with a user.
- The
incydr users list-devicescommand is now properly marked as deprecated. Useincydr users list-agentsinstead. - The
sdk.users.v1.get_devicesmethod is now properly marked as deprecated. Usesdk.agents.v1.iter_allinstead.
- A bug where
sdk.users.v1.get_deviceswould cause an error.
- A new authorization type to facilitate internal development and testing. No user-facing changes are present in this release.
- Added the
state_v2field to session states. Added the new session stateCLOSED_TP_BENIGN. - Added support for the
ONfilter in file event queries.
- A bug where the SDK's V2 Watchlist methods were returning the wrong models.
- The Incydr SDK and CLI now rely on Pydantic v2, instead of previously when they used v1. This means that the methods available on the models accepted and returned by many SDK methods have changed in some small ways. For most SDK and CLI workflows, no changes will need to be made to accommodate this upgrade. Details of the transition may be found in Pydantic's documentation.
- Support for subgroups in file event queries and saved searches. See this documentation for more details about this type of query.
- New methods for EventQuery() to enable more flexible filtering:
is_anyis_nonedate_rangesubquery
- New methods to download files by XFC content ID.
sdk.files.download_file_by_xfc_content_idandsdk.files.stream_file_by_xfc_content_idincydr files download-by-xfc-id
- An issue where in some cases saved searches could not be retrieved.
- Alert queries methods in the SDK, already deprecated, are more clearly marked.
- The
orgsandlegal_holdclients to the SDK. - The
orgsandlegal-holdcommand groups to the CLI.
- The
filesclient to the SDK with two methods:sdk.files.v1.download_file_by_sha256to download a file and save it in the file system.sdk.files.v1.stream_file_by_sha256to stream a file, allowing more control over how it is downloaded.
- Added the
files downloadcommand to the CLI to download a file by SHA256 hash.
- An issue where Sessions validation would fail due to an updated content inspection schema.
- CSV and JSON input for the CLI's bulk agent commands will now look for
agentGuidas a column header, in addition toagent_id,agentId, andguid.
watchlists.v2methods are added to the SDK, for parity with the API.- New CLI watchlist commands
list-excluded-actorsandlist-included-actorsto replace the deprecatedlist-excluded-usersandlist-included-users.
- The CLI's
watchlistscommands now use the v2 watchlist API. These commands correctly useactor_idinstead ofuser_id. While the previous user_id parameters will still work for now, we recommend that users switch as soon as possible to using actor_id instead.
- A bug where the api endpoint used to download audit log events was incorrect.
- Devices methods in the SDK and CLI are deprecated. Use the Agents methods instead.
- Risk Profiles methods in the SDK and CLI, already deprecated, are more clearly marked.
- The SDK's
watchlists.v1methods are deprecated. - The CLI's watchlist group
list-excluded-usersandlist-included-userscommands are deprecated. Uselist-excluded-actorsandlist-included-actorsinstead.
- Improved documentation to clarify that all agent health issues can be queried and filtered using the CLI and SDK.
- A bug where in some rare cases searching file events could cause the SDK to throw a validation error on the server's correct response.
- A bug where dates (e.g. 2025-01-08) were incorrectly converted to timestamps when querying sessions.
- Added support for python 3.13.
- The CLI and SDK now have user-agent headers consistent with Code42 current standards.
- Removed support for python 3.7 and 3.8, which are end-of-life.
- Updated the
FileEventV2model to all existing fields at this time. For example, the recently addedresponseControlsresponse object is now available on the model. - Updated
EventQueryobjects to allow filtering by any string by removing the requirement that filter terms and values must match explicitly defined fields. This allows end users to filter by fields recently added to the file event response without requiring an SDK update. client.actors.v1.get_actor_by_namenow defaults toprefer_parent=True. Previously, it defaulted toFalse.
- Support for the API to update actors.
client.actors.v1.update_actor- to update an actor's start date, end date, or notes.
- A CLI command to update an actor.
incydr actors update- to update an actor's start date, end date, or notes.
- Risk Profiles methods and commands are now deprecated, replaced by the
actorscommand group.
- Support for the Sessions APIs
- A
sessions.v1client to the SDK with the following methods:client.sessions.v1.get_page()- to query a page of sessions.client.sessions.v1.iter_all()- to lazily iterate through all pages of sessions.client.sessions.v1.get_session_details()- to retrieve the details of a single session specified by ID.client.sessions.v1.get_session_events()- to retrieve the file events associated with a session specified by ID.client.sessions.v1.update_state_by_id()- to update the state of a session specified by ID.client.sessions.v1.update_state_by_criteria()- to update the state of all sessions matching the filter criteria.client.sessions.v1.add_note()- to attach a note to a session specified by ID.
- A set of
sessionsCLI commands:incydr sessions searchto search sessions by criteria. Includes various filter, output, and checkpointing options.incydr sessions showto show session details.incydr sessions show-eventsto show file events associated with the session.incydr sessions updateto update the state and/or note of a session.incydr sessions bulk-update-stateto update the state and attach an optional note to multiple sessions at once
- A
- Support for Actors APIs, including:
- An
actors.v1client to the SDK with the following methods:client.actors.v1.get_page()- to query a single page of actors.client.actors.v1.iter_all()- to lazily iterate through all pages of actors.client.actors.v1.get_actor_by_id()- to retrieve details of a single actor by ID.client.actors.v1.get_actor_by_name()- to retrieve details of a single actor by name.client.actors.v1.get_family_by_member_id()- to retrieve details of an actor family by a member's ID.client.actors.v1.get_family_by_member_name()- to retrieve details of an actor family by a member's name.
- A set of
actorsCLI commands:incydr actors listto list all actors matching search criteria (in table, CSV, or JSON formats).incydr actors showto show details of a given actor by ID or name.incydr actors show-familyto show details of an actors family.
- An
- Breaking Change! Cloud alias risk profile functionality has been removed.
- The following Python SDK methods have been removed:
client.user_risk_profiles.add_cloud_alias()should be replaced byclient.actors.create_adoption()client.user_risk_profiles.remove_cloud_alias()should be replaced byclient.actors.remove_adoption()
- The following CLI commands have been removed.
incydr risk-profiles add-cloud-aliasshould be replaced byincydr actors adoption createincydr risk-profiles remove-cloud-aliasshould be replaced byincydr actors adoption removeincydr risk-profiles bulk-add-cloud-aliasesincydr risk-profiles bulk-remove-cloud-aliases
- The following Python SDK methods have been removed:
- Breaking Change!
User risk profileshave been renamed asRisk profilesto better fit their additional application to actors.- The SDK has been updated to reflect this via the following changes:
UserRiskProfilemodel has been renamed toRiskProfile.UserRiskProfilesPagemodel has been renamed toRiskProfilesPage.- The
UserRiskProfilesclass has been renamed toRiskProfiles - The Incydr client
user_risk_profilesproperty has been renamed torisk_profiles, methods in that client have been renamed similarly.client.user_risk_profiles.v1.get_user_risk_profile()would now beclient.risk_profiles.v1.get_risk_profile().
- The CLI has been updated to reflect this via the following changes:
- The
risk-profilescommand group is no longer available under theuserscommand group. It is still accessible as its ownincydrcommand group. ex:incydr risk-profiles list.
- The
- The SDK has been updated to reflect this via the following changes:
- Alerts Python SDK methods and the Alerts CLI commands group have been deprecated. Functionality is replaced by the Sessions SDK client and CLI command group.
- The following agent health related fields will be present on the response when retrieving agents:
serialNumbermachineIdagentHealthIssueTypes
- Additional optional args in the SDK's agent client for filtering by agent health.
client.agents.v1.get_page()andclient.agents.v1.get_page()now accept:agent_healthy: bool- Retrieve only healthy agents withTrueor only unhealthy agents withFalse. Defaults to returning all agents.agent_health_issue_types: List[str] | str- Retrieve agents with any of the given health issues. Ex:NOT_CONNECTING
- Additional options in the CLI's agent command group for filtering by agent health:
incydr agents listnow accepts:--healthy- Retrieve only healthy agents.--unhealthy- Retrieve only unhealthy agents.- Pass a comma separated list of health issue types to the unhealthy option to filter for agents with any of the given health issues. Ex:
--unhealthy NOT_CONNECTING,NOT_SENDING_SECURITY_EVENTS - Use
incydr agents list --helpto see more specifics on the new command options.
- See the SDK documentation and the CLI documentation for more details.
- Saved search filter values can now accept a list of strings. Prior to this fix this was incorrectly resulting in a model validation error.
- Pinned Pydantic version to major version
1.*following the release of Pydantic 2.0.
- Better error messaging when authentication parameters or env vars missing when instantiating the
incydr.Clientor running CLI commands. - Missing authentication parameters (
url,api_client_id, orapi_client_secret) causes client to raise new exception type:AuthMissingError. incydr.exceptionsmodule has been added to the public API.- Support for Agents APIs, including:
- An
agents.v1client to the SDK with the following methods:client.agents.v1.get_page()to query a single page of agents.client.agents.v1.iter_all()to lazily iterate through all pages of agents.client.agents.v1.get_agent()to retrieve details of a single agent by ID.client.agents.v1.update()to update thenameorexternalReferencefield of an agent.client.agents.v1.activate()to activate a list of agents by their IDs.client.agents.v1.deactivate()to deactivate a list of agents by their IDs.
- A set of
agentsCLI commands:incydr agents listto list all agents in your environment (in table, CSV, or JSON formats).incydr agents showto show the details of a given agent by ID.incydr agents bulk-activateto activate a set of agents from CSV or JSON-LINES file input.incydr agents bulk-deactivateto deactivate a set of agents from CSV or JSON-LINES file input.
- An
- New search terms on the incydr.enums.file_events.EventSearchTerm enum, enabling full support for querying the latest file event fields.
- New file event field models:
AcquiredFromGit,AcquiredFromSourceUser,UntrustedValues. - Various other additions to existing model fields.
- Bug in the
user_risk_profileclient, whereget_page()was using the incorrect query param for the page number. - Bug in
AuditEventsPagemodel that prevented some audit log events from being parsed correctly.