Skip to main content
Loom provides a built-in search feature that lets you find entries anywhere in your directory using LDAP filter syntax.

Quick Start

1

Open Search

Press F9 or / to focus the search input at the bottom of the screen.
2

Enter Filter

Type an LDAP filter using standard syntax:
(objectClass=person)
3

Execute Search

Press Enter to execute the search.Results appear in a popup overlay showing all matching entries.
4

Navigate to Entry

Use j/k or arrow keys to select a result, then press Enter to jump to that entry in the tree.
Searches are performed starting from your configured base DN and include all subtree entries.

LDAP Filter Syntax

LDAP filters use a prefix notation with parentheses. Here’s the basic syntax:

Simple Filters

Match an exact attribute value:
(cn=Alice)
Finds entries where cn equals “Alice”.

Compound Filters

Combine multiple conditions with logical operators:
All conditions must be true:
(&(objectClass=inetOrgPerson)(mail=*@example.com))
Finds entries that are both inetOrgPerson and have an email at example.com.Multiple conditions:
(&(objectClass=person)(cn=Alice*)(ou=engineering))

Nested Filters

Combine operators for complex queries:
(&(objectClass=person)(|(department=engineering)(department=qa))(!(disabled=TRUE)))
This finds:
  • Entries that are persons AND
  • In engineering OR QA AND
  • Not disabled
Nested filters can be hard to read. Break complex queries into smaller tests, then combine them once you’ve verified each part works.

Common Search Examples

(objectClass=person)
Or more specifically:
(objectClass=inetOrgPerson)
Exact match:
(cn=Alice Smith)
Starts with:
(cn=Alice*)
Contains:
(cn=*Smith*)
(mail=*@example.com)
Multiple domains:
(|(mail=*@example.com)(mail=*@example.org))
(objectClass=groupOfNames)
Or for POSIX groups:
(objectClass=posixGroup)
User is member of a group:
(memberOf=cn=admins,ou=groups,dc=example,dc=com)
Group contains a user:
(member=uid=alice,ou=users,dc=example,dc=com)
(objectClass=organizationalUnit)
By name:
(&(objectClass=organizationalUnit)(ou=engineering))
Has phone number:
(telephoneNumber=*)
Missing email:
(&(objectClass=person)(!(mail=*)))
(&(objectClass=posixAccount)(uidNumber>=1000)(uidNumber<=2000))
(modifyTimestamp>=20240101000000Z)
Timestamp format is YYYYMMDDHHMMSSz. Requires the server to maintain modifyTimestamp operational attribute.
(objectClass=*)
This returns every entry under the base DN. Use with caution on large directories.

Search Results Interface

When search results appear, you’ll see a popup with:
┌─ Search: (objectClass=person) (42 results) ─────────┐
│                                                      │
│  cn=Alice Smith,ou=users,dc=example,dc=com          │
│  cn=Bob Jones,ou=users,dc=example,dc=com            │
│  cn=Carol White,ou=users,dc=example,dc=com          │
│  ...                                                 │
│                                                      │
│  ↑/↓:navigate  Enter:go to entry  e:edit filter  q:close
└──────────────────────────────────────────────────────┘

Results Navigation

KeyAction
j / k / / Navigate results
PageDown / PageUpJump 10 results
Home / EndJump to first/last result
EnterGo to selected entry in tree
eEdit filter and search again
Esc / qClose results
Press Enter on a result to jump to that entry in the tree panel. The tree will automatically expand to show the entry’s location.

Search Scope

Base DN

Searches start from your configured base DN and include all subtree entries:
base_dn = "dc=example,dc=com"
Finds entries under dc=example,dc=com and all children.
To search a specific subtree, you can temporarily change your base DN in the connection dialog or create a dedicated profile.

Attribute Selection

By default, searches return all user attributes. Some operational attributes (like createTimestamp, modifyTimestamp) may require explicit request.
The search results popup shows DNs only. Select an entry to view full attributes in the detail panel.

Performance Tips

Narrow your search with specific object classes:Slower:
(cn=Alice*)
Faster:
(&(objectClass=person)(cn=Alice*))
Adding objectClass helps the server use indexes.
Leading wildcards prevent index usage:Slower:
(cn=*Smith)
Faster:
(cn=Smith*)
If you must search for endings, consider using substring searches sparingly.
Search on attributes that are indexed by the server:Common indexed attributes:
  • cn (common name)
  • uid (user ID)
  • mail (email)
  • objectClass
Check with your LDAP administrator which attributes are indexed.
For large directories, use a more specific base DN:Instead of:
base_dn = "dc=example,dc=com"
Use:
base_dn = "ou=users,dc=example,dc=com"

Active Directory Specific

Common AD Filters

(&(objectCategory=person)(objectClass=user))
Active Directory uses objectCategory for better performance.

AD Attribute Names

Active Directory uses different attribute names:
Standard LDAPActive Directory
uidsAMAccountName
mailmail (same)
cncn (same)
membermember (same)
memberOfmemberOf (same)
Example:
(sAMAccountName=alice)

Troubleshooting

If your search returns no results:
  • Verify your filter syntax is correct (balanced parentheses)
  • Check that attribute names are spelled correctly
  • Ensure the base DN includes the entries you’re looking for
  • Test with a simple filter like (objectClass=*) to verify connectivity
If searches timeout:
  • Narrow your filter to reduce the number of matches
  • Increase timeout_secs in your connection profile
  • Check server load and network latency
  • Consider if the filter can use indexes better
Common syntax errors:
  • Missing parentheses: cn=Alice(cn=Alice)
  • Unbalanced parens: (&(cn=Alice)(mail=*))
  • Wrong operator: Use & not &&, | not ||
  • Escaping: Use backslash for special chars: (cn=user\(test\))
If you expected more results:
  • Check your base DN scope
  • Verify you have permission to see those entries
  • Some servers limit result size (check page_size)
  • Try a more general filter to test

Special Characters

Escape these characters in filter values:
CharacterEscape Sequence
*\2a
(\28
)\29
\\5c
NUL\00
Example:
(cn=user\28test\29)
Searches for cn value “user(test)”.
For wildcards in substring searches, use literal * without escaping.

Next Steps

Editing Entries

Modify search results or create new entries

Browsing

Navigate the directory tree

Schema Viewer

View object classes and attribute types

Export

Export search results to files

Build docs developers (and LLMs) love