[Feature Request] Support wildcard/regex patterns for Unix socket path allowlisting

Resolved 💬 3 comments Opened Jan 22, 2026 by JoeDupuis Closed Feb 27, 2026

Bug Description
Some Ruby libraries generate Unix socket paths dynamically, making it impossible to allowlist them with the current static path configuration.

Example: DRb (Distributed Ruby)

DRb generates socket paths using the pattern:

${TMPDIR}/druby${PID}.${N}

Reference: https://github.com/ruby/drb/blob/master/lib/drb/unix.rb#L77

Use case:

This commonly occurs when running parallel Rails tests, which is the default behavior when running 50+ tests. Each parallel worker spawns processes with different PIDs, resulting in unpredictable socket paths.

Problem:

It's not always possible to configure the socket path—especially when the socket is created by a dependency rather than your own code.

Proposed solution:

Add support for wildcard or regex patterns when configuring allowed Unix sockets, e.g.:

  • ${TMPDIR}/druby*.sock
  • /tmp/druby[0-9]+\.[0-9]+

Environment Info

  • Platform: darwin
  • Terminal: tmux
  • Version: 2.1.15
  • Feedback ID: 3210e5a5-addb-4223-abdd-2838bd54838d

Errors

/Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/unix.rb:89:in `initialize': Operation not permitted - connect(2) for /tmp/claude/druby35814.0 (Errno::EPERM)
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/unix.rb:89:in `new'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/unix.rb:89:in `temp_server'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/unix.rb:37:in `open_server'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/drb.rb:795:in `block in open_server'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/drb.rb:793:in `each'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/drb.rb:793:in `open_server'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/drb.rb:1491:in `initialize'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/drb.rb:1819:in `new'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/drb-2.2.3/lib/drb/drb.rb:1819:in `start_service'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/activesupport-8.1.1/lib/active_support/testing/parallelization.rb:40:in `initialize'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/activesupport-8.1.1/lib/active_support/testing/parallelize_executor.rb:38:in `new'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/activesupport-8.1.1/lib/active_support/testing/parallelize_executor.rb:38:in `build_parallel_executor'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/activesupport-8.1.1/lib/active_support/testing/parallelize_executor.rb:32:in `parallel_executor'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/activesupport-8.1.1/lib/active_support/testing/parallelize_executor.rb:74:in `execution_info'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/activesupport-8.1.1/lib/active_support/testing/parallelize_executor.rb:69:in `show_execution_info'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/activesupport-8.1.1/lib/active_support/testing/parallelize_executor.rb:17:in `start'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/minitest-5.26.2/lib/minitest.rb:299:in `run'
	from /Users/joedupuis/workspace/rails_relay/.devenv/state/.bundle/ruby/3.3.0/gems/minitest-5.26.2/lib/minitest.rb:86:in `block in autorun'

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗