-
Notifications
You must be signed in to change notification settings - Fork 3
Collectors
ForceHound has two collection backends that can run independently or together.
Uses simple_salesforce to execute SOQL queries via the Salesforce REST API. Requires admin-level credentials (username/password or session ID with API access).
Collects: Users, Profiles, PermissionSets, PermissionSetGroups, Roles, Groups, GroupMembers, Organization (OWD), EntityDefinitions, ObjectPermissions, FieldPermissions, Connected Applications, Share objects.
forcehound --collector api \
--instance-url https://myorg.my.salesforce.com \
--username admin@myorg.com \
--password 'MyPass' \
--security-token ABCDEF123 \
-o output.json| Flag | Removes | Use case |
|---|---|---|
--skip-object-permissions |
SF_Object nodes, all CanRead/CanCreate/CanEdit/CanDelete/CanViewAll/CanModifyAll/CanViewAllFields edges | When you only need identity graph, not CRUD edges |
--skip-field-permissions |
SF_Field nodes, CanReadField/CanEditField/FieldOf edges | When field-level security is not needed |
--skip-entity-definitions |
InternalSharingModel/ExternalSharingModel/KeyPrefix enrichment on SF_Object nodes | When sharing model analysis is not needed |
--skip-shares |
SF_Record nodes, Owns/ExplicitAccess/InheritsAccess edges | When record-level sharing paths are not needed |
Uses aiohttp to call Salesforce Lightning/Aura endpoints. Works with low-privilege browser session tokens — no admin access required.
Collects: Users, Profiles, Roles, Groups, GroupMembers, Organization, NamespacedObjects. Optionally: CRUD probing.
forcehound --collector aura \
--instance-url https://myorg.lightning.force.com \
--session-id '00DgL...!AQEAQ...' \
--aura-context '{"mode":"PROD",...}' \
--aura-token 'eyJ...' \
-o output.jsonGetting Aura credentials: Open your Salesforce org in a browser, open DevTools (F12) > Network tab, find any request to /aura, and extract:
-
Hostheader →--instance-url -
sidcookie →--session-id -
aura.contextform field →--aura-context -
aura.tokenform field →--aura-token
Runs Aura first (identity graph), then supplements with API queries that Aura cannot cover (ObjectPermissions, FieldPermissions, EntityDefinitions, Shares, ConnectedApps, PermissionSetGroups).
forcehound --collector both \
--instance-url https://myorg.lightning.force.com \
--session-id '00DgL...!AQEAQ...' \
--aura-context '{"mode":"PROD",...}' \
--aura-token 'eyJ...' \
--api-instance-url https://myorg.my.salesforce.com \
--username admin@myorg.com \
--password 'MyPass' \
--security-token ABCDEF123 \
-o output.jsonThe graph is merged by node ID — no duplicates. Aura-sourced and API-sourced edges coexist.