aider
Install command:
brew install aiderAI pair programming in your terminal
License: Apache-2.0
Development: Pull requests
Formula JSON API: /api/formula/aider.json
Formula code: aider.rb on GitHub
Bottle (binary package) installation support provided for:
| macOS on Apple Silicon |
tahoe | ✅ |
|---|---|---|
| sequoia | ✅ | |
| sonoma | ✅ | |
| macOS on Intel |
sonoma | ✅ |
| Linux | ARM64 | ✅ |
| x86_64 | ✅ | |
Current versions:
| stable | ✅ | 0.86.2 |
| head | ⚡️ | HEAD |
Depends on:
| certifi | 2026.7.22 | Mozilla CA bundle for Python |
| freetype | 2.14.3 | Software library to render fonts |
| gcc | 16.2.0 | GNU compiler collection |
| jpeg-turbo | 3.2.0 | JPEG image codec that aids compression and decompression |
| libyaml | 0.2.5 | YAML Parser |
| openblas | 0.3.34 | Optimized BLAS library |
| python@3.12 | 3.12.14 | Interpreted, interactive, object-oriented programming language |
Depends on when building from source:
| ninja | 1.13.2 | Small build system for use with gyp or CMake |
| pkgconf | 3.0.5 | Package compiler and linker metadata toolkit |
| rust | 1.98.0 | Safe, concurrent, practical language |
Known vulnerabilities in the current version:
| GHSA-w8v5-vhqr-4h9v | DiskCache has unsafe pickle deserialization |
| CVE-2026-10175 | Aider-AI Aider Architect Mode auth.py editor_coder.run code injection |
| CVE-2026-10177 | Aider-AI Aider AWS EC2 Metadata Endpoint api_docs.py requests.get server-side request forgery |
| GHSA-w2fm-2cpv-w7v5 | aiohttp allows unlimited trailer headers, leading to possible uncapped memory usage |
| GHSA-gc5v-m9x4-r6x2 (medium) | Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility function |
| GHSA-mf9w-mj56-hr94 (medium) | python-dotenv: Symlink following in set_key allows arbitrary file overwrite via cross-device rena... |
| GHSA-hcc4-c3v8-rx92 | AIOHTTP Affected by Denial of Service (DoS) via Unbounded DNS Cache in TCPConnector |
| GHSA-2vrm-gr82-f7m5 | AIOHTTP has CRLF injection through multipart part content type header construction |
| GHSA-p998-jp59-783m | AIOHTTP affected by UNC SSRF/NTLMv2 Credential Theft/Local File Read in static resource handler o... |
| GHSA-m5qp-6w8w-w647 (high) | AIOHTTP has a Multipart Header Size Bypass |
| GHSA-3wq7-rqq7-wx6j | AIOHTTP has late size enforcement for non-file multipart fields causes memory DoS |
| GHSA-966j-vmvw-g2g9 (medium) | AIOHTTP leaks Cookie and Proxy-Authorization headers on cross-origin redirect |
| GHSA-mwh4-6h8g-pg8w | AIOHTTP has HTTP response splitting via \r in reason phrase |
| GHSA-63hf-3vf5-4wqf (critical) | AIOHTTP's C parser (llhttp) accepts null bytes and control characters in response header values -... |
| GHSA-c427-h43c-vf67 | AIOHTTP accepts duplicate Host headers |
| GHSA-jg22-mg44-37j8 (medium) | AIOHTTP is Vulnerable to Deserialization of Untrusted Data |
| GHSA-53mr-6c8q-9789 | LiteLLM: Privilege escalation via unrestricted proxy configuration endpoint |
| GHSA-jjhc-v7c2-5hh6 | LiteLLM: Authentication bypass via OIDC userinfo cache key collision |
| GHSA-whj4-6x5x-4v2j (high) | FITS GZIP decompression bomb in Pillow |
| GHSA-wxxx-gvqv-xp7p (high) | LiteLLM has a sandbox escape in custom-code guardrail |
| GHSA-xqmj-j6mv-4862 | LiteLLM: Server-Side Template Injection in /prompts/test endpoint |
| GHSA-rpm5-65cw-6hj4 (high) | GitPython has Command Injection via Git options bypass |
| GHSA-v4p8-mg3p-g94g (high) | LiteLLM: Authenticated command execution via MCP stdio test endpoints |
| GHSA-x2qx-6953-8485 (high) | GitPython: Unsafe option check validates multi_options before shlex.split transformation |
| GHSA-wjx4-4jcj-g98j (medium) | Pillow has an integer overflow when processing fonts |
| GHSA-5xmw-vc9v-4wf2 (medium) | Pillow has a heap buffer overflow with nested list coordinates |
| GHSA-r73j-pqj5-w3x7 (medium) | Pillow has a PDF Parsing Trailer Infinite Loop (DoS) |
| GHSA-pwv6-vv43-88gr | Pillow has an OOB Write with Invalid PSD Tile Extents (Integer Overflow) |
| GHSA-7545-fcxq-7j24 (high) | GitPython reference APIs has a path traversal vulnerability that allows arbitrary file write and ... |
| GHSA-v87r-6q3f-2j67 (high) | GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath |
| GHSA-qccp-gfcp-xxvc (medium) | urllib3: Sensitive headers forwarded across origins in proxied low-level redirects |
| GHSA-mf9v-mfxr-j63j (high) | urllib3: Decompression-bomb safeguards bypassed in parts of the streaming API |
| GHSA-5239-wwwm-4pmq (low) | Pygments has Regular Expression Denial of Service (ReDoS) due to Inefficient Regex for GUID Matching |
| GHSA-65pc-fj4g-8rjx (medium) | Internationalized Domain Names in Applications (IDNA): Specially crafted inputs to idna.encode() ... |
| GHSA-qrc4-49gv-mv9m (high) | LiteLLM allows an authenticated internal_user to create API keys with access to routes that their... |
| GHSA-wpfp-gwwc-vwq6 (high) | LiteLLM allows a user to modify their own user_role via the /user/update endpoint |
| GHSA-hg6j-4rv6-33pg | AIOHTTP is vulnerable to cross-origin redirect with per-request cookies |
| GHSA-86qp-5c8j-p5mr (medium) | Starlette has missing Host header validation that poisons request.url.path, bypassing path-based ... |
| GHSA-x746-7m8f-x49c (medium) | Starlette: Arbitrary HTTP method dispatched to `HTTPEndpoint` attributes via `getattr` |
| GHSA-wqp7-x3pw-xc5r (high) | Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows |
| GHSA-4xpc-pv4p-pm3w (critical) | LiteLLM: Authentication Bypass via Host Header Injection |
| GHSA-2wc2-fm75-p42x (high) | Soup Sieve has Memory Exhaustion via Large Comma-Separated Selector Lists |
| GHSA-836r-79rf-4m37 (high) | Soup Sieve: Regular Expression Denial of Service (ReDoS) via Selector Parser |
| GHSA-m6qw-4cw2-hm4m | aiohttp: CRLF injection in multipart headers |
| GHSA-62p4-gmf7-7g93 | Pillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA ... |
| GHSA-8v84-f9pq-wr9x (high) | Pillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_che... |
| GHSA-5x94-69rx-g8h2 (high) | Pillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()` |
| GHSA-4fvr-rgm6-gqmc | aiohttp: HTTP/1 Pipelined Requests Queue Without Limit |
| GHSA-xcgm-r5h9-7989 | aiohttp: Incomplete websocket frame payloads bypass memory limits |
| GHSA-4m7w-qmgq-4wj5 | aiohttp: TLS Server Hostname Override Is Ignored When Reusing HTTPS Connections |
| GHSA-hpj7-wq8m-9hgp | aiohttp: DigestAuthMiddleware Applies Credentials to Cross-Origin Redirect Challenges |
| GHSA-63hw-fmq6-xxg2 | aiohttp: C HTTP Parser Bypasses max_line_size for Fragmented Lines |
| GHSA-g3cq-j2xw-wf74 | aiohttp: Unread Compressed Request Bodies Bypass client_max_size During Cleanup |
| GHSA-2fqr-mr3j-6wp8 | aiohttp: Host-Only Cookies Become Domain Cookies After CookieJar Persistence |
| GHSA-9x8q-7h8h-wcw9 | aiohttp: Payload Response Resources Are Not Closed After Mid-Body Disconnect |
| GHSA-jp82-jpqv-5vv3 (low) | Starlette: Unvalidated request path concatenated into authority poisons request.url.hostname |
| GHSA-82w8-qh3p-5jfq (high) | Starlette: request.form() limits silently ignored for application/x-www-form-urlencoded enable DoS |
| GHSA-45hq-cxwh-f6vc (high) | Pillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` — bomb protectio... |
| GHSA-phj9-mv4w-65pm (high) | Pillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()` |
| GHSA-4x4j-2g7c-83w6 (medium) | Pillow: WindowsViewer.get_command() OS command injection via unescaped shell path |
| GHSA-xj96-63gp-2gmr (high) | Pillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand` |
| GHSA-fj7v-r99m-22gq (medium) | Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images |
| GHSA-6r8x-57c9-28j4 (high) | Pillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow |
| GHSA-jjj6-mw9f-p565 (high) | Pillow: Decompression Bomb DoS via PdfParser.PdfStream.decode() |
| GHSA-pg7v-jwj7-p798 (medium) | Pillow EpsImagePlugin negative %%BeginBinary byte count causes infinite loop denial of service |
| GHSA-vjc4-5qp5-m44j | Pillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service |
| GHSA-9hw9-ch79-4vh6 (high) | Pillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode... |
| GHSA-4g5m-c9r5-49xf | LiteLLM: Local file read via request-supplied OIDC file references |
| GHSA-5jmr-gcrj-2c9q | LiteLLM: Arbitrary file write via path traversal in Skills archive extraction |
| GHSA-72m8-9m7m-h278 | LiteLLM: Custom Code Guardrails production endpoints bypass code safety checks |
| GHSA-7488-6r32-c95q | LiteLLM: MCP Authentication Bypass via OAuth2 Passthrough Fallback |
| GHSA-mq44-7p77-q5h7 | AIOHTTP: WebSocket client accepts compressed frames without negotiated permessage-deflate |
| GHSA-rwj8-pgh3-r573 (high) | GitPython: Environment-variable exfiltration via os.path.expandvars() on Repo.clone_from() URL |
| GHSA-956x-8gvw-wg5v (high) | GitPython: command injection via unguarded Git options in `Repo.archive()`, `git.ls_remote()`, an... |
| GHSA-2f96-g7mh-g2hx (high) | GitPython: Command Injection via git long-option prefix abbreviation bypass of CVE-2026-42215 blo... |
| GHSA-mv93-w799-cj2w (high) | GitPython: Newline injection in config_writer() section parameter bypasses CVE-2026-42215 patch, ... |
| GHSA-3rp5-jjmw-4wv2 (high) | GitPython: git-config section-name injection enables arbitrary config directives (core.sshCommand... |
| GHSA-mfx4-hv73-q22v | AIOHTTP: HTTP request smuggling via WebSocket upgrade |
| GHSA-cq5v-8q36-5273 | AIOHTTP: Out-of-bounds heap read in C HTTP response parser error path (malformed chunked response) |
| PYSEC-2026-2132 (high) | |
| GHSA-539m-9xh6-q6rr (medium) | GitPython: Incomplete unsafe_git_archive_options denylist omits --add-file / --add-virtual-file, ... |
| GHSA-3f7w-8rr8-f37f (high) | GitPython: Unguarded git option forwarding in IndexFile.checkout() and TagReference.create() enab... |
| GHSA-p538-c434-8v24 (medium) | GitPython: Arbitrary file truncation via git rev-list --output argument injection in unguarded Co... |
| GHSA-94p4-4cq8-9g67 (high) | GitPython: Environment-variable exfiltration via Repo.create_remote() / Remote.add() URL (incompl... |
| GHSA-6p8h-3wgx-97gf (high) | GitPython: Incomplete unsafe_git_clone_options denylist omits --template enabling arbitrary comma... |
| GHSA-fjr4-x663-mwxc (high) | GitPython: Arbitrary file overwrite via git diff --output argument injection in Diffable.diff (ke... |
| GHSA-r9mr-m37c-5fr3 (high) | GitPython: Unsafe git option guard bypass via single-character kwarg value token smuggling enable... |
| GHSA-hh9p-6wh2-4mfc (medium) | GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout() |
| GHSA-9rj7-rf2p-w77r (high) | GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via -... |
| GHSA-4gmw-gg2m-w46p (high) | GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enab... |
| GHSA-wvpp-8hx9-p66j (high) | GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token ... |
| GHSA-jm78-9fvv-mhgr (high) | GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling ... |
| GHSA-hmq2-w58f-27jc (high) | GitPython: Arbitrary Git Repository Creation Outside the Working Tree via Unvalidated .gitmodules... |
| GHSA-3f7w-8rr8-f37f (high) | GitPython: Unguarded git option forwarding in IndexFile.checkout() and TagReference.create() enab... |
| GHSA-4gmw-gg2m-w46p (high) | GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enab... |
| GHSA-539m-9xh6-q6rr (medium) | GitPython: Incomplete unsafe_git_archive_options denylist omits --add-file / --add-virtual-file, ... |
| GHSA-69x8-hrgq-fjj8 | LiteLLM: Password hash exposure and pass-the-hash authentication bypass |
| GHSA-6p8h-3wgx-97gf (high) | GitPython: Incomplete unsafe_git_clone_options denylist omits --template enabling arbitrary comma... |
| GHSA-94p4-4cq8-9g67 (high) | GitPython: Environment-variable exfiltration via Repo.create_remote() / Remote.add() URL (incompl... |
| GHSA-9rj7-rf2p-w77r (high) | GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via -... |
| GHSA-fjr4-x663-mwxc (high) | GitPython: Arbitrary file overwrite via git diff --output argument injection in Diffable.diff (ke... |
| GHSA-hh9p-6wh2-4mfc (medium) | GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout() |
| GHSA-hmq2-w58f-27jc (high) | GitPython: Arbitrary Git Repository Creation Outside the Working Tree via Unvalidated .gitmodules... |
| GHSA-jm78-9fvv-mhgr (high) | GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling ... |
| GHSA-p538-c434-8v24 (medium) | GitPython: Arbitrary file truncation via git rev-list --output argument injection in unguarded Co... |
| GHSA-r9mr-m37c-5fr3 (high) | GitPython: Unsafe git option guard bypass via single-character kwarg value token smuggling enable... |
| GHSA-wvpp-8hx9-p66j (high) | GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token ... |
Data from Homebrew/advisory-database. Run brew vulns aider for a live check.
Analytics:
| 30 days | 90 days | 365 days | |
|---|---|---|---|
| Installs | 696 | 2,518 | 11,629 |
Installs (--HEAD) | 1 | 3 | 22 |
| Installs on Request | 696 | 2,518 | 11,628 |
Installs on Request (--HEAD) | 1 | 3 | 22 |
| Build Errors | 13 |