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 py42 consumers -- as such, changes that don't affect how a consumer would use the library (e.g. adding unit tests, updating documentation, etc) are not captured here.
- Support for Python 3.12, includes various dependency version requirement updates.
- Removed the following command groups following deprecation:
detection-lists
departing-employee
high-risk-employee
- APIs were replaced by the
watchlists
commands
- Vulnerability in
ipython
dependency for installs on Python 3.8+
- Bug in
security-data search|send-to
where using--format json
and a checkpoint raised an error when configured for V2 file events. - Bug in
devices list
command when using--include-legal-hold-membership
option with an API client auth profile.
- Updated setup requirements to allow for install with any
click
version>=7.1.1
- Support for
click
version>=8.0.0
.
- Support for Code42 API clients.
- You can create a new profile with API client authentication using
code42 profile create-api-client
- Or, update your existing profile to use API clients with
code42 update --api-client-id <id> --secret <secret>
- You can create a new profile with API client authentication using
- New commands to view details for user risk profiles:
code42 users list-risk-profiles
code42 users show-risk-profile
- Proxy support via
HTTPS_PROXY
environment variable.
- When using API client authentication, changes to the following
legal-hold
commands:code42 legal-hold list
- Change in response shape.code42 legal-hold show
- Change in response shape.code42 legal-hold search-events
- Not available.
- Support for the V2 file event data model.
- V1 file event APIs were marked deprecated in May 2022 and will be no longer be supported after May 2023.
- Use the
--use-v2-file-events True
option with thecode42 profile create
orcode42 profile update
commands to enable your code42 CLI profile to use the latest V2 file event data model. - See the V2 File Events User Guide for more information.
- The
--disable-ssl-errors
options for thecode42 profile create
andcode42 profile update
commands is no longer a flag and now takes a booleanTrue/False
arg.
code42 devices list
andcode42 devices list-backup-sets
now accept a--page-size <int>
option to enable manually configuring optimal page size.
- Reduced the
page_size
in Device API calls from 500 to 100 to reduce possibility of timeouts when including backup usage incode42 devices list
.
- Bug where the
code42 security-data search
command using a checkpoint and only the--include-non-exposure
filter resulted in invalid page tokens. - Bug where
code42 security-data search
would only return 10,000 events on the first search when using a new checkpoint.
- Bug where the
code42 security-data search
command using a checkpoint and only the--include-non-exposure
filter constructed an invalid search query.
watchlists bulk
commands now accept CSVs with extra headers
-
watchlists
command group for interacting with watchlists.watchlists add
for adding users to a watchlistwatchlists remove
for removing users from a watchlistwatchlists list
for listing existing watchlistswatchlists list-members
for listing users who are members of a given watchlistwatchlist bulk add|remove
for adding/removing multiple users via CSV file
-
users update-start-date
command to add/modify the "start date" property of a User's risk profile. -
users update-departure-date
command to add/modify the "end date" property of a User's risk profile. -
users update-risk-profile-notes
command to add/modify the "notes" property of a User's risk profile.
departing-employee
andhigh-risk-employee
command groups. These actions have been replaced by thewatchlists
command group.
departing-employee bulk remove
andhigh-risk-employee bulk remove
commands now accept CSVs with an optional header, as well as extraneous columns if a header is provided.- Added
devices rename
anddevices bulk rename
commands to rename devices.- Note: Incydr devices cannot be renamed.
- Added the following commands for managing users' cloud aliases:
users add-alias
users remove-alias
users list-aliases
users bulk add-alias
users bulk remove-alias
- Vulnerability in
ipython
dependency. See CVE-2022-21699.
- Bug where device settings were unable to be serialized to json.
--columns
option tosecurity-data search
andsecurity-data send-to
commands which reduces output to only the specified colums/json keys. Accepts a comma-separated list of column names (case-insensitive).
- Improved accuracy of checkpointing for
security-data search
(checkpoints every row as it is printed to stdout instead of just the last event of the search response).
- Updated minimum version of py42 to
1.19.3
to provide access to updated URI paths for new standardized versioning scheme.
- Incorrect column title on
code42 trusted-activities bulk create
command help text. code42 devices list
will now process--exclude-most-recently-connected
prior to--last-connected-before
instead of after.- The minimum required version of Python for code42cli is now correctly set as 3.6.2.
-
New bulk commands to manage user roles
code42 users bulk add-roles
code42 users bulk remove-roles
-
New option
--include-roles
oncode42 users list
that includes the roles for all users. -
New command
code42 users show <username>
that prints all the details of that user. -
New commands to view orgs
code42 users orgs list
code42 users orgs show <org-uid>
-
New option
--include-legal-hold-membership
on commandcode42 users list
that includes the legal hold matter name and ID for any user on legal hold. -
New commands for deactivating/reactivating Code42 user accounts:
code42 users deactivate
code42 users reactivate
code42 users bulk deactivate
code42 users bulk reactivate
-
code42 profile use
now prompts you to select a profile when not given a profile name argument. -
New
trusted-activities
commands for managing trusted activities and resources:code42 trusted-activities create
to create a trusted activity.code42 trusted-activities update
to update a trusted activity.code42 trusted-activities remove
to remove a trusted activity.code42 trusted-activities list
to print the details of all trusted activities.code42 trusted-activities bulk create
to bulk create trusted activities from a CSV file.code42 trusted-activities bulk update
to bulk update trusted activities from a CSV file.code42 trusted-activities bulk remove
to bulk remove trusted activities from a CSV file.
- Bug where
audit-logs search
with--use-checkpoint
option was causing output formatting problems. - Improve error message for
code42 users list
,code42 devices list
,code42 devices list-backup-sets
-
code42 profile
commands that validate passwords (create
,update
,reset-pw
) now have the--debug
option available, andcreate
andupdate
can now also pass in--totp
as an option. -
New command options for
code42 security-data search
--risk-indicator
to filter events by risk indicators.--risk-severity
to filter events by risk severity.
-
A TOTP token is now required on
code42 profile
commands that check for password validity when a user has MFA enabled. -
Updated minimum version of py42 to
1.18.0
to provide access toFIRST_DESTINATION_USE
andRARE_DESTINATION_USE
search filters.
code42 profile delete
command now prints a clear error message when deletion target doesn't exist.
- The
chardet
library is now an explicit dependency, resolving dependency issues for fresh installations using latestrequests
v.2.26.0
-
Issue where
code42 devices bulk deactivate
andcode42 devices bulk reactivate
would output incorrect Successes and Failures at the end of the process. -
Bug where
code42 audit-logs search
would fail to store checkpoints when timestamps included nanoseconds. -
Issue where if an error occurred during
code42 audit-logs search
orcode42 audit-logs send-to
, the user would get a stored checkpoint without having handled events.
-
New command
code42 users update
to update a single user. -
New command
code42 users bulk update
to update users in bulk. -
New command
code42 users move
to move a single user to a different organization. -
New command
code42 users bulk move
to move users in bulk.
- Now when a user is not found, the error message suggests that it might be because you don't have the necessary permissions.
-
New command
code42 users add-role
to add a user role to a single user. -
New command
code42 users remove-role
to remove a user role from a single user. -
New command
code42 shell
that opens an IPython console with a pre-initialized py42 sdk.
- Issue where
profile
commands that required connecting to an authority failed to respect the--disable-ssl-errors
flag when set.
- Support for users that require multi-factor authentication.
-
Issue where some error messages stopped displaying in the same way that they did in prior versions.
-
Issue where the
--role-name
option on the commandcode42 users list
caused the CLI to call a deprecated method.
-
New command
code42 alerts show
that displays information about a single alert. -
New command
code42 alerts update
that can update an alert's state or note. -
New command
code42 alerts bulk generate-template
for generating CSV templates for bulk commands. -
New command
code42 alerts bulk update
for bulk updating alerts. -
New command
code42 cases file-events bulk generate-template
creates the template CSV file for the given command arg. -
New command
code42 cases file-events bulk add
that takes a CSV file with case number and event ID. -
New command
code42 cases file-events bulk remove
that takes a CSV file with case number and event ID.
-
code42 alerts search
now includes the alert ID in its table output. -
code42 alerts search
table output now refers to the alert state asstate
instead ofstatus
.
- New command
code42 users list
with options:--org-uid
filters on org membership.--role-name
filters on users having a particular role.--active
and--inactive
filter on user status.
-
Bug where some CSV outputs on Windows would have an extra newline between the rows.
-
Issue where outputting or sending an alert or file-event with a timestamp without decimals would error.
-
A performance issue with the
code42 departing-employee bulk add
command.
-
code42 alert-rules list
now outputs via a pager when results contain more than 10 rules. -
code42 cases list
now outputs via a pager when results contain more than 10 cases.
code42 legal-hold search-events
command:--matter-id
filters based on a legal hold uid.--begin
filters based on a beginning timestamp.--end
filters based on an end timestamp.--event-type
filters based on a list of event types.
- Arguments/options that read data from files now attempt to autodetect file encodings. Resolving a bug where CSVs written on Windows with Powershell would fail to be read properly.
-
code42cli.extensions
module exposessdk_options
decorator andscript
group for writing custom extension scripts using the Code42 CLI. -
code42 devices list
options:--include-legal-hold-membership
prints the legal hold matter name and ID for any active device on legal hold--include-total-storage
prints the backup archive count and total storage
- Command options for
profile update
:-n
--name
is not required, and if omitted will use the default profile.-s
--server
and-u
--username
are not required and can be updated independently now.- Example:
code42 profile update -s 1.2.3.4:1234
- Issue where
code42 alert-rules bulk add
would show as successful when adding users to a non-existent alert rule.
- New choice
TLS-TCP
for--protocol
option used bysend-to
commands:code42 security-data send-to
code42 alerts send-to
code42 audit-logs send-to
for more securely transporting data. Included are new flags:--certs
--ignore-cert-validation
- The error text in cases command when:
cases create
sets a name that already exists in the system.cases create
sets a description that has more than 250 characters.cases update
sets a description that has more than 250 characters.cases file-events add
is performed on an already closed case.cases file-events add
sets an event id that is already added to the case.cases file-events remove
is performed on an already closed case.
-
The
devices
command is added. Included are:devices deactivate
to deactivate a single device.devices reactivate
to reactivate a single device.devices show
to retrieve detailed information about a device.devices list
to retrieve info about many devices, including device settings.devices list-backup-sets
to retrieve detailed info about device backup sets.devices bulk deactivate
to deactivate a list of devices.devices bulk reactivate
to reactivate a list of devices.devices bulk generate-template
to create a blank CSV file for bulk commands.
-
code42 departing-employee list
command. -
code42 high-risk-employee list
command. -
code42 cases
commands:create
to create a new case.update
to update case details.export
to download a case summary as a PDF file.list
to view all cases.show
to view the details of a particular case.
-
code42 cases file-events
commands:add
to add an event to a case.remove
to remove an event from a case.list
to view all events associated with a case.
-
The error text when removing an employee from a detection list now references the employee by ID rather than the username.
-
Improved help text for date option arguments.
- Issue where
code42 profile delete
was allowed without giving aprofile_name
even though deleting the default profile is not allowed.
code42 audit-logs
commands:search
to search for audit-logs.send-to
to send audit-logs to server.
-
profile_name
argument is now required forcode42 profile delete
, as it was meant to be. -
The
--advanced-query
option onalerts search
andsecurity-data (search|send-to)
commands has been updated:- It can now accept the query as a JSON string or as the path to a file containing the JSON query.
- It can be used with the
--use-checkpoint/-c
option.
-
Now, when adding a cloud alias to a detection list user, such as during
departing-employee add
, it will remove the existing cloud alias if one exists.- Before, it would error and the cloud alias would not get added.
-
Bug where
code42 legal-hold show
would error when terminal was too small. -
Fixed bug in
departing_employee bulk add
command that allowed invalid dates to be passed without validation.
-
The follow commands now print a nicer error message when trying to remove a user who is not on the list:
code42 departing-employee remove
code42 high-risk-employee remove
code42 alert-rules remove-user
-
-i
(--incremental
) has been removed, use-c
(--use-checkpoint
) with a string name for the checkpoint instead. -
The code42cli has been migrated to the click framework. This brings:
- BREAKING CHANGE: Commands that accept multiple values for the same option now must have the option flag provided before each value:
use
--option value1 --option value2
instead of--option value1 value2
(which was previously possible). - Cosmetic changes to error messages, progress bars, and help message formatting.
- BREAKING CHANGE: Commands that accept multiple values for the same option now must have the option flag provided before each value:
use
-
The
print
command on thesecurity-data
andalerts
command groups has been replaced with thesearch
command. This was a name change only, all other functionality remains the same. -
A profile created with the
--disable-ssl-errors
flag will now correctly not verify SSL certs when making requests. A warning message is printed each time the CLI is run with a profile configured this way, as it is not recommended. -
The
path
positional argument for bulkgenerate-template
commands is now an option (--p/-p
). -
Below
search
subcommands accept argument--format/-f
to display result in formatscsv
,table
,json
,raw-json
:- Default output format is changed to
table
format fromraw-json
, returns a paginated response. All properties would be displayed by default except when using-f table
. Pass--include-all
when usingtable
to view all non-nested top-level properties. code42 alerts search
code42 security-data search
code42 security-data saved-search list
code42 legal-hold list
code42 alert-rules list
- Default output format is changed to
-
--or-query
option added tosecurity-data search
andalerts search
commands which combines the provided filter arguments into an 'OR' query instead of the default 'AND' query. -
--password
option added toprofile create
andprofile update
commands, enabling creating profiles while bypassing the interactive password prompt. -
Profiles can now save multiple alert and file event checkpoints. The name of the checkpoint to be used for a given query should be passed to
-c
(--use-checkpoint
). -
-y/--assume-yes
option added toprofile delete
andprofile delete-all
commands to not require interactive prompt. -
Below subcommands accept argument
--format/-f
to display result in formatscsv
,table
,json
,formatted-json
:code42 alert-rules list
code42 legal-hold list
code42 legal-hold show
code42 security-data saved-search list
- The
write-to
command forsecurity-data
andalerts
command groups.
- Fixed bug that caused the last few entries in csv files to sometimes not be processed when performing bulk processing actions.
- Fixed bug that caused
alert-rules list
to error due to page size restrictions on backing service.
- Issue that prevented alerts from being retrieved successfully via
code42 alerts
commands due to a change in its backing API.
-
code42cli
no longer supports python 2.7. -
code42 profile create
now uses required--name
,--server
and--username
flags instead of positional arguments. -
code42 high-risk-employee add-risk-tags
now uses required--username
and--tag
flags instead of positional arguments. -
code42 high-risk-employee remove-risk-tags
now uses required--username
and--tag
flags instead of positional arguments.
-
Extraction subcommands of
code42 security-data
,print/write-to/send-to
accepts argument--saved-search
to return saved search results. -
code42 security-data saved-search
commands:list
prints out existing saved searches' id and nameshow
takes a search id
-
code42 high-risk-employee bulk
supportsadd-risk-tags
andremove-risk-tags
.code42 high-risk-employee bulk generate-template <cmd>
optionsadd-risk-tags
andremove-risk-tags
.add-risk-tags
that takes a csv file with username and space separated risk tags.remove-risk-tags
that takes a csv file with username and space separated risk tags.
-
Display,
Fuzzy suggestions
, valid keywords matching mistyped commands or arguments. -
code42 alerts
:- Ability to search/poll for alerts with checkpointing using one of the following commands:
print
to output to stdout.write-to
to output to a file.send-to
to output to server via UDP or TCP.
- Ability to search/poll for alerts with checkpointing using one of the following commands:
-
code42 alert-rules
commands:add-user
with parameters--rule-id
and--username
.remove-user
that takes a rule ID and optionally--username
.list
.show
takes a rule ID.bulk
with subcommands:add
: that takes a csv file with rule IDs and usernames.generate-template
: that creates the file template. And parameters:cmd
: with optionsadd
andremove
.path
remove
: that takes a csv file with rule IDs and usernames.
-
code42 legal-hold
commands:add-user
with parameters--matter-id/-m
and--username/-u
.remove-user
with parameters--matter-id/-m
and--username/-u
.list
prints out existing active legal hold matters.show
takes amatter_id
and prints details of the matter.- optional argument
--include-inactive
additionally prints matter memberships that are no longer active. - optional argument
--include-policy
additionally prints out the matter's backup preservation policy in json form.
- optional argument
bulk
with subcommands:add-user
: that takes a csv file with matter IDs and usernames.remove-user
: that takes a csv file with matter IDs and usernames.generate-template
: that creates the file templates.cmd
: with optionsadd
andremove
.path
-
Success messages for
profile delete
andprofile update
. -
Additional information in the error log file:
- The full command path for the command that errored.
- User-facing error messages you see during adhoc sessions.
-
A custom error in the error log when you try adding unknown risk tags to user.
-
A custom error in the error log when you try adding a user to a detection list who is already added.
-
Graceful handling of keyboard interrupts (ctrl-c) so stack traces aren't printed to console.
-
Warning message printed when ctrl-c is encountered in the middle of an operation that could cause incorrect checkpoint state, a second ctrl-c is required to quit while that operation is ongoing.
-
A progress bar that displays during bulk commands.
-
Short option
-u
added forcode42 high-risk-employee add-risk-tags
andremove-risk-tags
. -
Tab completion for bash and zsh for Unix based machines.
- Fixed bug in bulk commands where value-less fields in csv files were treated as empty strings instead of None.
- Fixed anomaly where the path to the error log on Windows contained mixed slashes.
- Issue introduced in py42 v1.1.0 that prevented
high-risk-employee
anddeparting-employee
commands from working properly.
- Issue that prevented bulk csv loading.
-
Issue that prevented version 0.5.0 from updating its dependencies properly.
-
Issue that prevented the
add
andbulk add
functionality ofdeparting-employee
andhigh-risk-employee
from successfully adding users to lists when specifying optional fields.
securitydata
renamed tosecurity-data
.- From
security-data
related subcommands (such asprint
):--c42username
flag renamed to--c42-username
.--filename
flag renamed to--file-name
.--filepath
flag renamed to--file-path
.--processOwner
flag renamed to--process-owner
.
-b|--begin
and-e|--end
arguments now accept shorthand date-range strings for days, hours, and minute intervals going back from the current time (e.g.30d
,24h
,15m
).- Default profile validation logic added to prevent confusing error states.
code42 profile update
command.code42 profile create
command.code42 profile delete
command.code42 profile delete-all
command.code42 high-risk-employee
commands:bulk
with subcommands:add
: that takes a csv file of users.generate-template
: that creates the file template. And parameters:cmd
: with optionsadd
andremove
.path
remove
: that takes a list of users in a file.
add
that takes parameters:--username
,--cloud-alias
,--risk-factor
, and--notes
.remove
that takes a username.add-risk-tags
that takes a username and risk tags.remove-risk-tags
that takes a username and risk tags.
code42 departing-employee
commands:bulk
with subcommands:add
: that takes a csv file of users.generate-template
: that creates the file template. And parameters:cmd
: with optionsadd
andremove
.path
remove
: that takes a list of users in a file.
add
that takes parameters:--username
,--cloud-alias
,--departure-date
, and--notes
.remove
that takes a username.
code42 profile set
command. Usecode42 profile create
instead.
- Added message to STDERR when no results are found
- Add milliseconds to end timestamp, to represent end of day with milliseconds precision.
- Support for storing passwords when keying is not available.
- Bug where keyring caused errors on certain operating systems when not supported.
- Updated help texts to be more descriptive.
- Bug where encoding would cause an error when opening files on python2.
- Bug where
profile reset-pw
did not work with the default profile. - Bug where
profile show
indicated a password was set for a different profile. - We now validate credentials when setting a password.
- Date inputs are now required to be in quotes when they include a time.
- Support for multiple profiles:
- Optional
--profile
flag for:securitydata write-to
,print
, andsend-to
,profile show
,set
, andreset-pw
.
code42 profile use
command for changing the default profile.code42 profile list
command for listing all the available profiles.
- Optional
- The following search args can now take multiple values:
--c42username
,--actor
,--md5
,--sha256
,--filename
,--filepath
,--processOwner
,--tabURL
- Fixed bug where port attached to
securitydata send-to
command was not properly applied.
- Begin dates are no longer required for subsequent interactive
securitydata
commands. - When provided, begin dates are now ignored on subsequent interactive
securitydata
commands. --profile
arg is now required the first time setting up a profile.
- Begin and end date now support specifying time:
code42 securitydata print -b 2020-02-02 12:00:00
. - If running interactively and errors occur, you will be told them at the end of
code42 securitydata
commands. - New search arguments for
print
,write-to
, andsend-to
:--c42username
--actor
--md5
--sha256
--source
--filename
--filepath
--processOwner
--tabURL
--include-non-exposure
- It is no longer required to store your password in your profile, and you will be prompted to enter your password at runtime if you don't.
- You will be asked if you would like to set a password after using
code42cli profile set
. - Begin date is now required for
securitydata
print
,write-to
, andsend-to
commands.
- Removed
--show
flag fromcode42 profile set
command. Just usecode42 profile show
.
- Removed config file settings and
-c
CLI arg. Usecode42 profile set
. - Removed
--clear-password
CLI argument. Usecode42 profile set -p
. You will be prompted. - Removed top-level destination args. Use subcommands
write-to
.send-to
,print
off ofcode42 security data
.
- Added ability to view your profile:
code42 profile show
. - Added
securitydata
subcommands:- Use
code42 securitydata write-to
to output to a file. - Use
code42 securitydata send-to
to output to a server. - Use
code42 securitydata print
to outputs to stdout. - Use
code42 securitydata clear-cursor
to remove the stored cursor for 'incremental' mode.
- Use
- Added support for raw JSON queries via
code42 securitydata [subcommand] --advanced-query [JSON]
.
- Renamed base command
c42aed
tocode42
. - Moved CLI arguments
-s
,-u
, and--ignore-ssl-errors
tocode42 profile set
command. - Renamed and moved top-level
-r
flag.- Use
-i
on one of thesesecuritydata
subcommandswrite-to
.send-to
,print
.
- Use
- Moved search arguments to individual
securitydata
subcommandswrite-to
.send-to
,print
.
- Issue where IOError message was inaccurate when using the wrong port for server destinations.
- Error handling for all socket errors.
- Error handling for IOError 'connection refused'.