Last Month in Nautobot – August 2026
Welcome to our monthly Nautobot community update! We’ll dive into the latest updates across the Nautobot community, highlighting the key milestones, releases, and noteworthy contributions. From new features and enhancements to bug fixes and events, there’s always something happening in our dynamic ecosystem. Open source is at the core of our values, empowering individuals and organizations to collaborate, innovate, and make a positive impact together. This monthly blog post is our way of celebrating the accomplishments and contributions of our Nautobot community members.
Nautobot Core
Releases – Stable
- v3.2.4 – 2026-08-31
- #9404, #9422 – Updated the
gitpythondependency to address multiple security vulnerabilities. - #9381 – Changed the Saved View REST API so the
ownerfield is read-only and always set to the requesting user, and theviewfield can only be set when creating a Saved View. - #9381 – Changed Saved Views and Saved View Associations to be excluded when
EXEMPT_VIEW_PERMISSIONSis set to the implicit all ("*") value. - #7553 – Added the
SSO_SYNC_GROUPSsetting to restrict which groups are synced into Nautobot from the SSO group claim. - #9381 – Added a
/api/extras/saved-views/<uuid>/set-default/REST API endpoint that lets users set (POST) or clear (DELETE) their own default Saved View without needing any Saved View permissions. - #9394 – Changed SSO group sync to properly revoke group memberships and staff or superuser status when the group claim changes from non-empty to empty.
- #9381 – Deprecated the
/api/extras/user-saved-view-associations/REST API endpoints in favor of the new set-default endpoint. - #9419 – Improved the performance of many UI, REST, and GraphQL filters by no longer applying an unnecessary
.distinct()to the filtered query. - #9419 – Fixed a number of model filters that traverse a to-many relation, such as
CircuitFilterSet.provider_networkandTenantGroupFilterSet.children, returning duplicate objects, including<field>__isnull=Falsefilters such as?tags__isnull=False. - #9381 – Fixed several Saved View issues, including the edit form not applying the same ownership and permission checks as other Saved View operations, a server error when an unknown
saved_viewUUID was supplied as a query parameter, and the table configuration form ignoring the column ordering of the applied Saved View.
- #9404, #9422 – Updated the
- v3.2.3 – 2026-08-17
- GHSA-x69f-q4wj-vx72 – Fixed missing object-level permission enforcement on the legacy
/api/dcim/console-connections/and/api/dcim/power-connections/REST API endpoints. - #9354, #9358, #9370, #9371 – Updated several dependencies, including
cryptography,Django,gitpython,js-yaml,postcss,fast-uri, andbrace-expansion, to address known security vulnerabilities. - #9369 – Added a “Skip to main content” bypass link to all base templates, plus live regions so that screen reader users are notified of messages added via HTMX and of pagination changes.
- #9366 – Added a note to the Device creation form describing the necessary steps to assign a management IP.
- #9346 – Changed Interface validation to allow putting a breakout sub-interface into a LAG.
- #9369 – Changed status, role, and tag badge text colors to be chosen by actual WCAG contrast ratio rather than a perceived-brightness heuristic, and raised the contrast of disabled rows on the Jobs list.
- #9369 – Fixed several accessibility defects, including the viewport meta tag blocking pinch-zoom and text scaling, missing accessible names and missing
altattributes on images, keyboard navigation traps, and touch targets smaller than the WCAG minimum. - #8449 – Fixed the REST API returning an HTTP 500 error instead of an HTTP 400 when an invalid
depthquery parameter (outside the range 0-10) was provided. - #9282 – Fixed an
AttributeErrorraised when editing an Interface belonging to a Module that has no parent Device while its 802.1Q mode was set to “Tagged”. - #9362 – Fixed an N+1 query issue in the Interface Connections list view and REST API endpoint, improving performance on large installations.
- GHSA-x69f-q4wj-vx72 – Fixed missing object-level permission enforcement on the legacy
- v3.2.2 – 2026-08-03
- #9323 – Added support for the
termination_idfilter to the cable filterset. - #9204 – Changed change logging of many-to-many associations declared with an explicit
throughmodel so that both associated objects now receive a change log entry. - #9204, #9270 – Fixed missing change log entries, webhooks, job hooks, and events when creating or deleting many-to-many association records via the REST API.
- #6887 – Fixed SSO group syncing to also read group attributes from SAML responses.
- #9329 – Fixed missing JobResult records when a scheduled job runs while no Celery worker is available; the scheduler now creates a pending JobResult before publishing the task and marks it as failed if publishing fails.
- #9332 – Fixed segmentation faults in uWSGI worker processes when OpenTelemetry tracing used the OTLP gRPC exporter together with
django-silkrequest profiling. - #9337 – Fixed the
Job.task_queuesproperty returning a deferred QuerySet instead of the documented list of strings, which also removes a potential database deadlock when bulk-deleting Job records. - #9325 – Fixed breakout cable interfaces not updating their colors and icons when a cable status changed.
- #9335 – Fixed OpenTelemetry log correlation duplicating and reformatting log lines when
OTEL_PYTHON_LOG_CORRELATIONwas enabled. - #9336 – Fixed the REST API schema for several structured JSON fields that previously rendered as untyped objects.
- #9323 – Added support for the
Releases – LTM 2.4
- v2.4.41 – 2026-08-31
- #9405, #9423 – Updated the GitPython dependency to address multiple security vulnerabilities.
- #9381 – Changed the Saved View REST API so the
ownerfield is read-only and always set to the requesting user, and theviewfield can only be set when creating a Saved View. - #9381 – Changed Saved Views and Saved View Associations to be excluded when
EXEMPT_VIEW_PERMISSIONSis set to the implicit all ("*") value. - #7553 – Added the
SSO_SYNC_GROUPSsetting to restrict which groups are synced into Nautobot from the SSO group claim. - #9381 – Added a
/api/extras/saved-views/<uuid>/set-default/REST API endpoint that lets users set (POST) or clear (DELETE) their own default Saved View without needing any Saved View permissions. - #9394 – Changed SSO group sync to properly revoke group memberships and staff or superuser status when the group claim changes from non-empty to empty.
- #9381 – Deprecated the
/api/extras/user-saved-view-associations/REST API endpoints in favor of the new set-default endpoint. - #6887 – Fixed SSO group syncing to also read group attributes from SAML responses.
- #9381 – Fixed the Saved View edit form to apply the same ownership and permission checks as the other Saved View operations, including enforcement of the documented
extras.change_savedviewpermission for the global default Saved View. - #9381 – Fixed a server error when an invalid or unknown
saved_viewUUID was supplied as a query parameter on an object list view.
- v2.4.40 – 2026-08-17
- GHSA-x69f-q4wj-vx72 – Fixed missing object-level permission enforcement on the legacy
/api/dcim/console-connections/,/api/dcim/power-connections/, and/api/dcim/interface-connections/REST API endpoints. - #9360 – Updated the
cryptographyand GitPython dependencies to address known security vulnerabilities. - #9282 – Fixed an
AttributeErrorraised when editing an Interface belonging to a Module that has no parent Device while its 802.1Q mode was set to “Tagged”. - #9368 – Fixed an
AttributeErrorfrom the legacy/api/dcim/interface-connections/REST API endpoint when an Interface was cabled to a non-Interface endpoint such as a CircuitTermination.
- GHSA-x69f-q4wj-vx72 – Fixed missing object-level permission enforcement on the legacy
- v2.4.39 – 2026-08-03
- #9327 – Fixed the GitRepository sync REST API endpoint not applying object-level permission restrictions (
restrict()) when retrieving the repository. - #9302 – Added
BOOLEAN_CHOICESandBOOLEAN_WITH_BLANK_CHOICESto thenautobot.apps.constantspublic API for developers building Nautobot Apps. - #9204 – Changed change logging of many-to-many associations declared with an explicit
throughmodel so that both associated objects now receive a change log entry. - #9204, #9270 – Fixed missing change log entries, webhooks, job hooks, and events when creating or deleting many-to-many association records via the REST API.
- #9327 – Fixed the GitRepository sync REST API endpoint not applying object-level permission restrictions (
Apps Ecosystem
- Nautobot App SSoT: v4.6.1 – 2026-08-07
- #1290 – Fixed LibreNMS sync failing with an
AttributeErrorwhen no Tenant Filter was selected; IP addresses are now placed in the Global namespace when no tenant is set. - #1290 – Fixed the Tenant Filter being silently ignored by the Nautobot to LibreNMS job.
- #1310 – Fixed a
ProtectedErrorcrash in the Meraki integration when a SoftwareVersion that was still assigned to a Device was deleted, by deferring SoftwareVersion deletion until after Devices have been updated.
- #1290 – Fixed LibreNMS sync failing with an
- Nautobot App Device Onboarding: v5.5.1 – 2026-08-31
- #609 – Fixed the Sync Devices and Sync Network Data jobs to ensure Git-provided command mappers are synced before running.
- Nautobot App Device Onboarding: v5.5.0 – 2026-08-17
- Increased the minimum supported Nautobot version to 3.1.0.
- #604 – Added support for Cable sync on Nautobot 3.2.0 and later, and fixed cable sync failing on those versions.
- Nautobot App ChatOps: v3.3.1 – 2026-08-14
- #448 – Changed the Grafana integration so that it works with
diffsync2.0.
- #448 – Changed the Grafana integration so that it works with
- Nautobot App ChatOps: v4.1.0 – 2026-08-14
- Increased the minimum supported Nautobot version to 3.1.0.
- #448 – Changed the Grafana integration so that it works with
diffsync2.0.
- Nautobot App DNS Models: v2.3.0 – 2026-08-13
- #222, #256 – Added an
enabledboolean field (defaultTrue) to DNS zones and to every DNS record type, so each object can be marked as eligible for publication by external integrations. - #217 – Added more fields to the DNS Zone Bulk Edit form.
- #224 – Changed
DNSZone.soa_rnameto accept single-label placeholders and to normalize supported DNS-style mailboxes to email form. - #214 – Fixed DNS integer fields (Zone TTL, SOA refresh/retry/expire/serial/minimum, and record TTL) to support the full RFC-compliant unsigned 32-bit range (0-4294967295).
- #214 – Fixed a bug where a record TTL of 0 was treated as unset and silently replaced by the zone TTL.
- #243 – Fixed the auto-create PTR records field so that it looks the same as the other boolean fields in the bulk edit form.
- #222, #256 – Added an
- Nautobot App Nornir: v3.2.4 – 2026-08-20
- #278 – Added a default
nornir_settingsto the App configuration, soPLUGINS_CONFIGno longer requires anautobot_plugin_nornirentry; anornir_settingsdictionary is now merged over the defaults, so it only needs the keys you want to change. - #278 – Fixed idle database connection cleanup never running for deployments that supplied no
nornir_settings.
- #278 – Added a default
- Nautobot App Nornir: v3.2.3 – 2026-08-14
- Nornir Nautobot: v4.4.0 – 2026-08-13
- #298 – Added support for Jinja template rendering with
substitute_linesin theget_configtask.
- #298 – Added support for Jinja template rendering with
- Cookiecutter Nautobot App: nautobot-app-v2.7.3 – 2026-08-10
- Cookiecutter Nautobot App: nautobot-app-v3.1.4 – 2026-08-07
- Pylint Nautobot: v1.1.0 – 2026-08-19
- #138 – Added Python 3.14 support.
- #136 – Added
django.test.TransactionTestCaseto the incorrect base class checker. - #141 – Added checks for code affected by the Nautobot 3.2 and later changes to the cable data models.
- #144 – Changed the Nautobot minimum version check so that it no longer loads on startup.
Community
Conclusion
Get in Touch!
Do you have a cool Nautobot-related project we should write about? Swing by the Network to Code Slack -> channel #nautobot and write us a quick line! Sign up here if you don’t have an account.
-Gary
