agent: route remaining home-directory lookups through usershell EnvInfoer
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
Direzione di ricerca
Inizia dai cinque file Go elencati e verifica come EnvInfoer viene già fatto passare attraverso l’agent, usando il comando grep fornito per trovare i lookup diretti rimanenti. Segui prima il seam usershell esistente, quindi determina il plumbing necessario per ogni sottosistema. Il lavoro è completato quando i lookup dell’agent non relativi ai test al di fuori di agent/usershell non aggirano più EnvInfoer, mentre agent/agentsocket/socket_windows.go rimane invariato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
agent/usershell is the canonical place to resolve a user's home directory and shell, and usershell.EnvInfoer is the injectable seam that lets SSH sessions, the process API, and tests override that resolution (host vs container vs deterministic test environment). coder/coder#26102 routed working-directory resolution, MOTD/hushlogin lookup, manifest path expansion, and secret-file injection through EnvInfoer, and unexported usershell.HomeDir/usershell.Get so the host is no longer reachable directly from the resolution path.
Several agent subsystems still call os.UserHomeDir() (and user.Current()) directly, bypassing the injected EnvInfoer. In a container session, or a test with an injected environment, these resolve the host home directory instead of the intended one.
Remaining sites as of coder/coder#26102:
agent/agentssh/x11.goresolving~/.Xauthorityagent/agentscripts/agentscripts.goexpanding~in script log pathsagent/agentcontextconfig/resolve.goexpanding~in context-config pathsagent/agentfiles/ls.goresolving the home base forLSRelativityHomeagent/agentcontainers/ignore/dir.goresolving the global gitignore home
How to verify
From the coder/coder repo root:
grep -rn 'os\.UserHomeDir\|user\.Current' --include='*.go' agent/ | grep -v '/usershell/' | grep -v '_test.go'
Every hit outside agent/usershell is a direct lookup that does not consult an EnvInfoer.
Desired outcome
These subsystems resolve the home directory through an EnvInfoer (the same one already plumbed into the agent), so injected and container environments are honored consistently. After this, the only direct home/user lookups in the agent tree should live inside agent/usershell, which backs SystemEnvInfo.
Constraints
agent/agentscripts,agent/agentcontextconfig,agent/agentfiles, andagent/agentcontainers/ignoredo not currently receive anEnvInfoer. Threading the seam into each is the bulk of the work, and the reason this is split out from coder/coder#26102 rather than bundled in.agent/agentsocket/socket_windows.gocallsuser.Current()for the current user's SID to set Windows socket ACLs. That is a real OS-identity check, not home/shell resolution, and should stay on the OS user rather than an injectable seam. Leave it as-is.
Follow-up to coder/coder#26102. Parent: coder/internal#1560.
🤖 Filed by Coder Agents on behalf of @mafredri.
- Lingua principale
- Nessun dato sulla lingua
- Stelle
- 3
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di coder/internal
-
flake
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
flake
-
flake
Tutte le issue di coder/internal
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
mksglu/context-mode#1200 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
clawsweeper:needs-maintainer-review clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr impact:auth-provider issue-rating: 🌊 off-meta tidepool P2
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100