I'm not sure why snmpwalk is behaving the way it is. Here's my code: http://www.dreness.com/bits/tech/persist_test.py The issue can be demonstrated with excerpts from my debug log. If I send an snmpwalk to the top of my OID tree (i.e. the one defined in snmpd.conf), it behaves as expected: in: PING out: PONG in: getnext in: .1.3.6.1.4.1.8072.9999.9999 - relative target: || - getnext is working .1.1 - < .1.1 out: .1.3.6.1.4.1.8072.9999.9999.1.1 out: integer out: 707 in: PING out: PONG in: getnext in: .1.3.6.1.4.1.8072.9999.9999.1.1 - relative target: |.1.1| - getnext is working .1.1 - .1.1 < .1.1 - getnext is working .1.2 - .1.1 < .1.2 out: .1.3.6.1.4.1.8072.9999.9999.1.2 out: integer out: 260 in: PING out: PONG in: getnext in: .1.3.6.1.4.1.8072.9999.9999.1.2 - relative target: |.1.2| - getnext is working .1.1 - .1.2 < .1.1 - getnext is working .1.2 - .1.2 < .1.2 out: NONE and snmpwalk reports: {66} andre@dhcp6 [~] % snmpwalk -v 1 -c tiny.937 .1.3.6.1.4.1.8072.9999.9999 SNMPv2-SMI::enterprises.8072.9999.9999.1.1 = INTEGER: 707 SNMPv2-SMI::enterprises.8072.9999.9999.1.2 = INTEGER: 260 but if I target .1.3.6.1.4.1.8072.9999.9999.1.1, something different happens: in: PING out: PONG in: getnext in: .1.3.6.1.4.1.8072.9999.9999.1.1 - relative target: |.1.1| - getnext is working .1.1 - .1.1 < .1.1 - getnext is working .1.2 - .1.1 < .1.2 out: .1.3.6.1.4.1.8072.9999.9999.1.2 out: integer out: 260 in: PING out: PONG in: get in: .1.3.6.1.4.1.8072.9999.9999.1.1 - relative target: |.1.1| out: .1.3.6.1.4.1.8072.9999.9999.1.1 out: integer out: 707 with snmpwalk reporting: {67} andre@dhcp6 [~] % snmpwalk -v 1 -c tiny.937 .1.3.6.1.4.1.8072.9999.9999.1.1 SNMPv2-SMI::enterprises.8072.9999.9999.1.1 = INTEGER: 707 Can anybody explain why snmpwalk can't get past .1.1 in the second example, even though I return .1.2?