[Bug]: pillar masking in 3008 breaks the world
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 5.6k
- Avg merge
- 2d 44m
- Merged PRs (30d)
- 80
Description
What happened?
In 3008 a new feature as introduced: masking of pillar data. This breaks everything. On every call site to pillar.get, pillar.item or pillar.items, I now have to include unmask=True. Also, to not break compatibility with 3007, this parameter must only be added if on 3008. There's literally not a single call site where I can omit unmask=True, because if I need to read the pillar, I need to read the pillar. Just in our application alone, this amounts to almost 100 call sites and I've spoken to our infra team, and they think this can go into the hundreds for them. IMHO this pillar masking should not be enabled by default when calling these execution modules (either via salt-call or from another execution module). If some script or tool needs to read the data, returning ****** is no good and will for sure break that script.
Also, the fact that only string values are obfuscated seems completely arbitrary. Numbers and even booleans can also contain sensitive data. For example, someone could store an RSA key by representing p and q as numbers.
Please disable this pillar masking for manual invocations of an execution module by default or at least allow it to be disabled globally.
Type of salt install
Official rpm
Major version
3008.x
What supported OS are you seeing the problem on? Can select multiple. (If bug appears on an unsupported OS, please open a GitHub Discussion instead)
almalinux-9
salt --versions-report output
# salt --versions-report
Salt Version:
Salt: 3008.1
Python Version:
Python: 3.14.6 (main, Jun 11 2026, 02:19:05) [GCC 11.2.0]
Dependency Versions:
cffi: 2.0.0
cherrypy: 18.10.0
cryptography: 48.0.0
dateutil: 2.9.0.post0
docker-py: Not Installed
gitdb: 4.0.12
gitpython: Not Installed
Jinja2: 3.1.6
libgit2: Not Installed
looseversion: 1.3.0
M2Crypto: Not Installed
Mako: Not Installed
msgpack: 1.1.2
msgpack-pure: Not Installed
mysql-python: Not Installed
packaging: 24.0
pycparser: 3.00
pycrypto: Not Installed
pycryptodome: 3.23.0
pygit2: Not Installed
python-gnupg: 0.5.6
PyYAML: 6.0.3
PyZMQ: 27.1.0
relenv: 0.22.14
smmap: 5.0.2
timelib: 0.3.0
Tornado: 6.5.7
ZMQ: 4.3.5
Salt Package Information:
Package Type: onedir
System Versions:
dist: almalinux 9.8 Olive Jaguar
locale: utf-8
machine: x86_64
release: 7.0.0-27-generic
system: Linux
version: AlmaLinux 9.8 Olive Jaguar
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing pillar.get, pillar.item, and pillar.items from manual salt-call invocations and calls between execution modules, comparing behavior in Salt 3007 and 3008. Determine where pillar masking is enabled and how a global or invocation-specific default would apply. Done means manual execution-module calls no longer unexpectedly return masked pillar data while the requested compatibility behavior remains covered by tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devops, infrastructure
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100