Guide for network engineers

How to find configuration drift across Cisco, Arista and Juniper

Drift is any difference between what a device runs and what it should run. Compare against three baselines (the saved configuration, the golden configuration and the last approved change), act on what matters, and review it every week.

8-minute read · Free Excel workbook

Three baselines, three kinds of drift

  • Running versus startup. Changes made but not saved. A reload silently reverts them: the fix made during last month’s incident disappears at the next power event. Junos (opens in a new tab) has no running and startup split; its equivalent risk is uncommitted work left in the candidate configuration.
  • Running versus golden. Differences from the approved standard for the device’s role: management access, AAA, logging, NTP, SNMP, spanning-tree protections, control-plane policing. This is where security and consistency drift shows up.
  • Running versus the last approved change. The configuration should equal the configuration left by the last approved change. Anything else is an unrecorded change: an emergency fix never written up, a test left in place, a change made on the wrong device.

Add a fourth comparison for redundant pairs. Members of an HSRP or VRRP pair, vPC or MLAG peers and firewall HA pairs should differ only where the design says they differ. A line present on one core and missing on the other is drift, even when both match the golden configuration.

Words in capitals in the commands below are placeholders for your values.

Cisco IOS XE: the configuration archive and differences

IOS XE compares configurations with show archive config differences. With no arguments it compares the startup configuration with the running configuration; with one file it compares that file with the running configuration; with two files it compares them in the order given. Lines marked + exist only in the second configuration, and lines marked - only in the first.

Turn on the archive so there is history to compare against. In configuration mode:

  • archive enters archive configuration.
  • path flash:archived-config sets where copies go; each copy gets a number.
  • write-memory archives a copy every time the configuration is saved.
  • time-period 1440 also archives on a timer (the value is in minutes, so 1440 is daily).
  • maximum 14 keeps the 14 most recent copies.
  • log config, then logging enable, records each configuration command with the user who entered it; hidekeys under log config keeps passwords out of that log.
Cisco IOS XE
CheckCommandWhat good looks like
Running versus startupshow archive config differencesNo differences: everything running is saved
Archive settings and copiesshow archiveArchive path set and the most recent copy listed
Archive a copy nowarchive configA new numbered copy appears in show archive
Compare two archived copiesshow archive config differences flash:archived-config-3 flash:archived-config-4Only the lines of approved changes between the two copies
Compare a saved copy with runningshow archive config differences flash:CHG-NUMBER-pre.cfgOnly the lines of approved changes made since that copy
Who changed whatshow archive log config allEvery entry matches an approved change or a known operator (needs logging enabled under archive log config)
Configuration events in the logshow logging | include CONFIG_IEvery “Configured from” event matches a change record

Syntax varies by platform and software version; test in a lab first.

Cisco NX-OS: running-config diff and checkpoints

NX-OS (opens in a new tab) shows unsaved changes with show running-config diff. Checkpoints give you a baseline to compare against: create one before every change and at the end of every approved window, then diff the running configuration against it. Checkpoint names must be unique and must not start with the word system.

Cisco NX-OS
CheckCommandWhat good looks like
Running versus startupshow running-config diffNo differences: everything running is saved
Create a checkpointcheckpoint NAMECheckpoint created before each change and at the end of each approved window
List checkpointsshow checkpoint summaryA checkpoint exists for the last approved change
Compare a checkpoint with runningshow diff rollback-patch checkpoint NAME running-configNothing beyond approved changes made since the checkpoint
Save a copy to bootflashcopy running-config bootflash:NAME.cfgFile saved for later or off-box comparison
Compare a saved file with runningshow diff rollback-patch file bootflash:NAME.cfg running-configNothing beyond approved changes made since the file was saved
Who changed whatshow accounting logEvery configuration command in the period matches an approved change
Roll back to a checkpoint: STATE-CHANGING, approved maintenance window onlyrollback running-config checkpoint NAME atomicApplied only if no errors occur; confirm afterward with show diff rollback-patch

Syntax varies by platform and software version; test in a lab first.

Arista EOS: configuration sessions and diffs

EOS shows unsaved changes with show running-config diffs. Configuration sessions help prevent drift: a change made in configure session NAME is reviewed with show session-config diffs before it takes effect, and the session name can carry the change number. Check for abandoned sessions too; show configuration sessions lists them.

Arista EOS
CheckCommandWhat good looks like
Running versus startupshow running-config diffsNo differences: everything running is saved
Sessions on the switchshow configuration sessionsNo abandoned sessions; session names match change numbers
Start a change in a sessionconfigure session NAMEChanges held in the session until committed
Review the session before commitshow session-config diffsOnly the lines of the approved change
Commit with automatic rollback: STATE-CHANGING, approved maintenance window onlycommit timer 00:10:00Session committed; rolled back unless confirmed within 10 minutes
Confirm the timed commit: STATE-CHANGING, approved maintenance window onlyconfigure session NAME commitChange kept
Discard a sessionconfigure session NAME abortSession removed; running configuration unchanged
Save a copy to flashcopy running-config flash:NAME.cfgFile saved for later comparison
Export without secrets for off-box diffsshow running-config sanitizedPasswords and keys masked in the output
Restore a saved configuration: STATE-CHANGING, approved maintenance window onlyconfigure replace flash:NAME.cfgRunning configuration replaced by the file; verify afterward

Syntax varies by platform and software version; test in a lab first.

Juniper Junos: commit history and rollback comparison

Junos (opens in a new tab) records every commit with its time, user and comment, and keeps previous configurations as numbered rollbacks (rollback 0 is the active configuration). That makes the last approved change easy to find: show system commit lists the commits, and show configuration | compare rollback N shows everything that changed since commit N. The same pipe compares against a file, which is how you check a device against a golden configuration stored on it.

One Junos (opens in a new tab) habit causes quiet drift. In shared configuration mode, uncommitted changes stay in the candidate, and the next person who types commit commits them. Check with show | compare and status before you start.

Juniper Junos
CheckCommandWhat good looks like
Commit historyshow system commitEvery commit in the period has a known user and a change number in its comment
What changed since commit Nshow configuration | compare rollback NOnly lines from approved changes
Compare with a golden file on the deviceshow configuration | compare /var/tmp/GOLDEN.confOnly the differences the role allows
Uncommitted changes (configuration mode)show | compareNothing pending in the candidate
Who else is editing (configuration mode)statusNo one else editing, or the other users are known
Set-format export for off-box diffsshow configuration | display setOne line per statement, ready for a line-by-line diff
Commit events in the logshow log messages | match UI_COMMITEvery commit matches a change record
Commit with the change number (configuration mode)commit comment "CHG-NUMBER"Comment visible in show system commit
Return to a previous commit (configuration mode): STATE-CHANGING, approved maintenance window onlyrollback 1Candidate loaded from rollback 1; review with show | compare, then commit to apply

Syntax varies by platform and software version; test in a lab first.

Comparing against a golden configuration

A golden configuration is only useful when it is rendered per device: the role template filled in with that device’s hostname, addresses and interfaces. Compare the rendered golden with the device’s running configuration, off the box, with any text diff tool.

  • Normalize both sides first. Strip header comments and timestamps and compare in one format; on Junos (opens in a new tab), display set output diffs cleanly line by line.
  • Never sort to make a diff tidy where order matters: ACL entries, route-map and policy terms, prefix lists. Their order changes behavior.
  • Keep an exceptions list with the device, the lines, the reason, the approver and an expiry date. An exception without an expiry becomes the new standard by accident.
  • Keep golden templates in version control and review changes to them like changes to the network.

What drift matters, and what is noise

Not every difference deserves a ticket. Rank findings by what they put at risk: security first, then redundancy, then routing policy. Filter the noise, but keep the filter visible so nobody hides a real change behind it.

Drift worth acting on, and noise
CategoryExamplesWhy it matters
SecurityNew local user; SNMP community or user added; management ACL removed from the VTY lines; logging or AAA server removed; a password or key changed outside a changeAccess and audit trail. A changed secret with no change record is a security event until it is explained.
RedundancyHSRP or VRRP priority, preemption or tracking different between peers; DHCP helper or static route on one core only; vPC or MLAG parameter mismatch; HA monitored interface removedThe pair works today and fails on the day it is needed.
Routing policyPrefix-list entry added; route-map or policy-statement term changed; new redistribution; static route added; OSPF cost changedChanges what the network advertises and where traffic goes, often far from the device that changed.
NoiseHeader comments and timestamps; lines some Cisco (opens in a new tab) IOS releases write themselves, such as ntp clock-period; default lines a new release displays; order changes in sections where order has no effectFilter it so real findings stand out, and review the filter itself from time to time.

Adjust the categories and examples to your own standards and audit scope.

A weekly drift review routine

An hour a week keeps drift from piling up. Run it on the same day each week, with the same worksheet.

  1. Unsaved changes. List every device where running and startup differ and, on Junos (opens in a new tab), any uncommitted candidate. Find the change behind each: save it if it was approved, revert it if it was not.
  2. Unrecorded changes. List the configuration changes of the last 7 days from commit history, archive logs, accounting logs and syslog. Match each to an approved change record. Anything unmatched gets a ticket and an owner.
  3. Golden comparison. Compare every device with its rendered golden configuration. Review only deviations that are new since last week; known ones are either in the exceptions list or already have an owner.
  4. Pair comparison. Compare the members of each redundant pair on the lines that should match.
  5. Classify and assign. Mark each finding security, redundancy, routing policy or noise, and give it a severity, an owner and a due date.
  6. Trend. Record open findings at the start and end of the week, and how many are high severity. A number that only grows is a process problem, not a device problem.

Command accounting through TACACS+ records who entered which command on every platform that supports it, which makes step 2 much faster than reading device logs one at a time.

Checklist

Weekly drift review checklist

Get the template

Configuration drift review worksheet

An Excel worksheet with a device register, a findings log with category, severity, owner and age, an exceptions list with expiry dates, a weekly trend sheet and a command reference for Cisco (opens in a new tab) IOS XE, Cisco NX-OS (opens in a new tab), Arista EOS (opens in a new tab) and Juniper (opens in a new tab) Junos (opens in a new tab).

Excel workbook (.xlsx) · free

  • One email with a personal download link, valid for 72 hours.
  • No attachments, no drip campaign; we may follow up once, by a person.
  • Your details are sent securely and never placed in the page URL.

With or without REAP

How REAP helps

REAP’s network posture and risk analysis flags running/startup drift and out-of-sync active/standby pairs, alongside contextual CVE (opens in a new tab) exposure, with each finding tied to the configuration evidence behind it. In a pilot, these findings are reviewed with your architect in the week-3 Findings Report.

CapabilityStatus
Network posture & risk analysis: active/standby sync, running/startup drift, contextual CVE (opens in a new tab) exposureAvailable

Status labels as on the product status page, September 2026 release.

Questions

Straight answers

Is a difference between running and startup always a problem?

During a change window it is expected. Outside one, it means the next reload changes behavior, for better or worse, without anyone deciding. Either save the change through the change process or revert it.

Where should golden configurations live?

In version control, one template per device role with the per-device variables kept separately, reviewed and approved like any other change. A golden configuration nobody maintains produces findings nobody trusts.

How do we handle approved deviations?

Record each in an exceptions list with the device, the lines, the reason, the approver and an expiry date. Review the list in the weekly routine, and reopen anything past its expiry.

Does drift detection replace change management?

No. It catches what change management missed: emergency fixes, undocumented tests, changes on the wrong device. Each unrecorded change it finds is a question for the change process as well as a fix for the device.

What counts as drift on Junos, with no startup configuration?

Uncommitted changes in the candidate, commits without a change number in the comment, and differences from the rendered golden configuration or from the configuration left by the last approved commit.

Bring us your last P1.

Keep the root cause to yourself; in a 30-minute session we walk through how REAP would have investigated it, evidence first. The replay on your own network happens inside the proof of value.