openai/codex · error · io::Error
AlreadyExists
AlreadyExists
Error message
socket directory path exists and is not a directory: {} What it means
Error "socket directory path exists and is not a directory: {}" thrown in openai/codex.
Source
Thrown at codex-rs/uds/src/lib.rs:118
const SOCKET_DIR_MODE: u32 = 0o700;
const SOCKET_DIR_PERMISSION_BITS: u32 = 0o777;
pub(super) type Stream = UnixStream;
pub(super) struct Listener(UnixListener);
pub(super) async fn prepare_private_socket_directory(socket_dir: &Path) -> IoResult<()> {
let mut dir_builder = fs::DirBuilder::new();
dir_builder.mode(SOCKET_DIR_MODE);
match dir_builder.create(socket_dir).await {
Ok(()) => return Ok(()),
Err(err) if err.kind() == ErrorKind::AlreadyExists => {}
Err(err) => return Err(err),
}
let metadata = fs::symlink_metadata(socket_dir).await?;
if !metadata.is_dir() {
return Err(io::Error::new(
ErrorKind::AlreadyExists,
format!(
"socket directory path exists and is not a directory: {}",
socket_dir.display()
),
));
}
let permissions = metadata.permissions();
// The SSH-over-UDS control socket is reachable by path, so the
// rendezvous directory must be owner-traversable while denying
// group/other access; exact 0700 fixes insecure modes and unusable
// owner-only modes like 0600.
if permissions.mode() & SOCKET_DIR_PERMISSION_BITS != SOCKET_DIR_MODE {
fs::set_permissions(socket_dir, std::fs::Permissions::from_mode(SOCKET_DIR_MODE))
.await?;
}
View on GitHub (pinned to 339751715c)
When it happens
Trigger: Thrown at codex-rs/uds/src/lib.rs:118 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of openai/codex@339751715c (2026-08-25).
Data as JSON: /api/errors/799965b4522521e4.
Report an issue: GitHub.